struts2.0.11+jquery1.4.4, ajax方式实现登录,为什么firefox下是好的,在IE7下不行?

jlpf 2010-12-23
我参考 这个link做了个sample http://www.114java.com/JavaScript_ajax_jquery_flex/2010/0331/1052_2.html

在firefox下工作正常,但在IE7下不成功,没有弹出回调函数中的alert窗口。

public class LoginSample {

	
	public String userLogin(){

		 jsonRoot.put("logeResult",false);

		  return "logErro";
		 }
	


	private Map<String, Object> jsonRoot = new HashMap<String, Object>();
	 
	 public Map<String, Object> getJsonRoot() {
	  return jsonRoot;
	 }
	 public void setJsonRoot(Map<String, Object> jsonRoot) {
	  this.jsonRoot = jsonRoot;
	 }
}



xml
 <package name="sample" namespace="/sample" extends="json-default">				
				
				
				<action name="userLogin" class="com.cmp.action.admin.LoginSample" method="userLogin">           			
           			<result name="logErro" type="json">           			
           			</result>           			 
				</action>		
				
						
     </package>


jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript" src="../jquery/jquery-1.4.4.min.js"></script>
</head>
<body>
<form action="" name="logform" id="logform">
          <div class="wline">username:<input  type="text" name="logUsername" id="logUsername" value="" style="width:120px;"/></div>
          <div class="wline">password:<input  type="text" name="userPassword" id="userPassword" value="" style="width:120px;"/></div>
          <div class="wline">checkcode:<input type="text" id="checkCode" name="checkCode" class="required input" title="checkcode"/>
          </div>
         <div class="wline">
         <input  type="button" name="" value="login" onclick="ajaxlogin();" style="width:50px; height:25px; "/>
         <input  type="button" name="" value="back" style="width:50px; height:25px; "/>
       
          </div>
  </form>
</body>

<script>
function ajaxlogin(){
	  var params=$('#logform').serialize(); //这里直接就序列化了表单里面的值;很方便

	   $.ajax({
	               url :'userLogin.action',  //后台处理程序
	               type:'post',    //数据发送方式
	               dataType:'json',   //接受数据格式
	               data:params,   //要传递的数据;就是上面序列化的值
	               success:login_Result //回传函数(这里是函数名) 
	   });
	     
}
 function login_Result(json){ //回传函数实体,参数为XMLhttpRequest.responseText
	 alert("tset");
	  if(json.logeResult){
   alert("this is 1");
  }else{
   alert("this is 2");
  }
 }

  
	               
</script>
</html>


那位高手知道什么原因?

先行谢过!!
xianshi_cn 2011-07-22
首先你的

  <result name="logErro" type="json"> 

这就要求你要放入struts2-json-plugin.jar以及json-lib.jar

接下来的代码直接返回对象,不需要手动生成json串了,struts2会帮你做这件事的:
 
  public String userLogin(){ 
         logeResult = false;
          return "logErro"; 
         } 
caleb_520 2011-07-23
xianshi_cn 写道
首先你的

  <result name="logErro" type="json"> 

这就要求你要放入struts2-json-plugin.jar以及json-lib.jar

接下来的代码直接返回对象,不需要手动生成json串了,struts2会帮你做这件事的:
 
  public String userLogin(){ 
         logeResult = false;
          return "logErro"; 
         } 


同意“xianshi_cn”的观点。struts2会自动帮助你完成json格式的封装。如果你要看最后封装的json的具体数据,你可以利用火狐的firebug,在firebug控制台查看即可知道
Global site tag (gtag.js) - Google Analytics