javascript代码
function checkRegister(){

var userName = $('#aaa').val(); 
var url = "XXXXXXX/AjaxCheckRegister";
var jsonObj = {user_name:userName};
var jsonStr = JSON.stringify(jsonObj);
$.post(url,{json:jsonStr},callbackFun,'json');
alert("sssss");
}
function callbackFun(data){     
  alert(data);
}   
function add(){
$('#add_school').wrapInner('<td colspan="4" id="add_school"><input type="input" name="newschool" id="newschool" size="20" /><input type="button" id="ok" name="ok" value="确定"  onclick="addSchool()" /><input type="button" id="cancel" name="cancel" value="取消"  onclick="cancle()" /></td>');
}
action代码
public String checkRegister() {
        try {
        
         JSONObject jsonObj = new JSONObject(json); // 将JSON格式的字符串构造成JSON对象  
            String user_name = jsonObj.getString("user_name"); // 获取JSON对象中的productId属性的值  
            System.out.println(user_name);
            String isRegistered = "isRegistered:" + this.studentService.checkByname(user_name);
            result = "{msg:'" + isRegistered + "'}";    //构造JSON格式的字符串     
            System.out.println(result);
sendMsg(result);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}    //发送JSON格式的字符串回JS端      
 catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
  return SUCCESS;
    }  
      
    public void sendMsg(String content) throws IOException{      
        HttpServletResponse response = ServletActionContext.getResponse();      
        response.setCharacterEncoding("UTF-8");      
        response.getWriter().write(content);      
    }    
struts.xml
 <package name="example" namespace="/baoming" extends="struts-default,json-default">
     <action name="AjaxCheckRegister" class="XXXXXXX.StudentAction" method="checkRegister">
      <result type="json"></result>  
     </action>
   </package>
struts下想验证一下用户名是否注册,现在前台信息可以发送到后台,后台的数据传不回来,大家帮忙看看是哪里的问题!

解决方案 »

  1.   

    你确认 action已经正常执行了?ajax发送是正确的吗?
      

  2.   

    action已经正常执行了 就是在前台接受不到,我都无语了
      

  3.   

    jsp 代码呢?  是不是 少标签啊
      

  4.   

    你的url对吗?我的是这样的 var url="loginAction!login.do"
      

  5.   

    后台已能接受到前台传来的数据,所以跟jsp应该没关系,现在就是callbackFun没被调用,不知道为什么
      

  6.   

    url没问题,后台已经接受到参数了。发帖的时候把url稍微改了一下
      

  7.   

    response.getWriter().write(content); 改为response.getWriter().print(content);
      

  8.   

    改过可是是没反应,很奇怪以前写servlet用的类似的方式都可以,这回怎么不给力了,再帮忙看看吧!
      

  9.   

    用dwr不好么?  个人感觉 jsp开发还是用dwr方便些。对于异步操作来说·
      

  10.   

    是不是 <result type="json"></result> 这个的问题Action中的语句   return SUCCESS;SUCCESS 为字符串 “success”,貌似在web.xml中找不到对应的result
      

  11.   

    别用response.getWriter().write(content);     Action中加一个保存result的属性配置文件中
    <result type="json">
         <param name="root">result</param><!--假设Action的result属性保存结果-->
    </result>  这样试一下呢还有就是用了json-default了,struts-default就可以不用写了,因为json-default已经继承了struts-default了
      

  12.   

    你既然result type="json"了。就不要把response拿出来写了。
    result type="json"  代表他返回你对象的属性 定义一个成员属性 存放你的json字符串就好了 他的内容会被返回出来的 还有        $.post(url,{json:jsonStr},callbackFun,'json');
    是不是因为你没给callbackFun传参?
      

  13.   

    写个servlet来处理ajax请求,别用struts2
      

  14.   

    说的倒是很有道理,不过这似乎不合常理吧,总不能有一个异步请求就写一个servlet吧……
      

  15.   

     $.post(url,{json:jsonStr},callbackFun,'json');
    改为:
     $.post(url,{json:jsonStr},callbackFun,'html');
      

  16.   

    都用STRUTS2 了 
    为什么不用他JSON返回类型的配置呢?
    真的很方便
      

  17.   


    这个servlet可以有多个方法,可以给每个ajax请求传个参数,servlet根据参数的不同选择不同的方法去处理异步请求。
      

  18.   

    反正我感觉struts2的ajax有点麻烦,还是servlet好用啊
      

  19.   

    回调函数没执行 说明你的json数据转换上出了问题  我以前也遇到过,还有你都继承json-default了 json插件会自动将你的action中变量转换成json数据,记住在get函数前加上注解,或者在struts文件中配置 然后页面直接接受json数据用就行 不需要这些转换