和二不要调皮 2016-07-30 11:45 采纳率: 42.9%
浏览 1449
已采纳

jquery.ajax struts2 不能返回数据

 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;
}
}
  • 写回答

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 汇编语言除法溢出问题