jquery.ajax struts2 采用上下文方式获取response, 提交两次才能提交到struts里,而且不能返回,偶尔能返回,这是在IE上的,在firefox不能访问,代码如下:
前端代码:
<script src="jquery-3.0.0.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
var username= document.getElementById("name").value;
var password = document.getElementById("password").value;
alert(username+" "+password);
//var json = {"name":username,"password":password};
$.ajax({
type:"get",
url:"http://127.0.0.1:8080/AjaxJsonStruts1/login.action",
async:true,
//data:"json="+JSON.stringify(json),
data:"name="+username+"&password="+password,
success:function(datas){
alert(datas);
},
error:function(){
alert("登录出错");
//window.open("error.html");
}
});
});
});
</script>
</head>
<body>
<form>
用户名:<input type="text" id="name" /><br />
密码: <input type="password" id="password"/><br />
<button>登录</button><br />
<!--<button id="register">注册</button>-->
</form>
后台:
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true"/>
<constant name="struts.i18n.encoding" value="UTF-8" />
<package name="default" extends="struts-default" >
<action name="login" class="com.action.LoginAction" method="login"/>
<action name="register" class="com.action.RegisterAction"/>
</package>
</struts>
package com.action;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.ws.Response;
import net.sf.json.JSONObject;
import org.apache.struts2.ServletActionContext;
import com.bean.User;
import com.opensymphony.xwork2.ActionSupport;
import com.sun.xml.xsom.impl.WildcardImpl.Other;
public class LoginAction extends ActionSupport{
private HttpServletRequest request;
private HttpServletResponse response;
public LoginAction(){
request = ServletActionContext.getRequest();
response = ServletActionContext.getResponse();
}
public void login() throws IOException{
//System.out.println("begin");
//response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Cache-Control", "no-cache");
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
/*String jsonstring = request.getParameter("json");
JSONObject json = JSONObject.fromObject(jsonstring);*/
User user = new User();
String name = request.getParameter("name");
String password = request.getParameter("password");
user.setName(name);
user.setPassword(password);
//user = (User) JSONObject.toBean(json, User.class);
System.out.println("user : "+user.getName()+" : "+user.getPassword());
String answer="";
if("admin".equals(user.getName())&&"123456".equals(user.getPassword())){
System.out.println("success");
answer="success";
}else{
System.out.println("erorrr");
answer="error";
}
out.print(answer);
out.flush();
out.close();
}
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public HttpServletResponse getResponse() {
return response;
}
public void setResponse(HttpServletResponse response) {
this.response = response;
}
}
jquery.ajax struts2 不能返回数据
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- Go 旅城通票 2016-07-30 13:10关注
标准浏览器下button是submit按钮,要设置类型为button,要不会提交表单导致ajax根本没执行。。而且你jquery3+,jquery2+不在支持ie8-,注意jquery版本
<button>登录</button> ==> <button type="button">登录</button>
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 【提问】基于Invest的水源涵养
- ¥20 微信网友居然可以通过vx号找到我绑的手机号
- ¥15 spring后端vue前端
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥65 汇编语言除法溢出问题