日期:2014-05-20  浏览次数:20658 次

struts2+json+jquery-ajax老是返回error,找不出问题!
先上代码
--------------------------
这里是JS部分
Java code

function getstaffinfo(){
    
     var staffid=$("#staffid").val();
     $.ajax({
            type: "post",
            url: "getInfoById.action?staffid="+$("#staffid").val(),
            contentType:"application/json;charset=utf-8",
            error:function(){
                 alert("err");
                 
             },
            success: function(result) {
             alert("success");
             var json=eval(result);
                 var staffname= json.staffname;
                 var staffcareer = json.staffcareer;
                 document.getElementById("staffname").value=staffname;
                 document.getElementById("staffcareer").value=staffcareer;
         }});
          
     
}




action部分
Java code

private Map<String, String> result;

//........省略get/set

public String getInfoById(){
        List<Staff> list = this.getSalaryService().findSalaryTableById(this.getStaffid());
        Map<String, String> result2 =new HashMap<String, String>();
        result2.put("staffname", list.get(0).getName());
        result2.put("staffcareer",list.get(0).getCareer());
        this.setResult(result2);
        return SUCCESS;
        
    }


HTML
Java code

<tr>    
  <td colspan="6"><font color="red">*</font>员工工号</td>
  <td><input type="text" name="salarytable.staffid" id="staffid" onblur="getstaffinfo()"></td>
  <td colspan="6">员工姓名</td>    
  <td><input type="text"  id="staffname" value="" /></td>
  <td colspan="6">员工职位</td>    
  <td><input type="text"  id="staffcareer" value="" /></td>
</tr>



struts.xml部分
Java code

<package name="salary2"  extends="json-default">
    <result-types>    
        <result-type name="json" class="org.apache.struts2.json.JSONResult"/>
    </result-types>
        <action name="getInfoById" class="main.salary.action.SalaryAction" method="getInfoById">
        <result name="json"></result>
    </action>
    </package>
</struts>



调试的时候一直进error ,也没有报错 ,弄了大半天不知道原因,求大伙帮小弟看看哪里出了问题,还有就是js里取返回的map值该如何写,前面把取值部分放到error里测试了下 输出的是undefined。。。。小弟不才 求跳明路啊!!!!





------解决方案--------------------
啊!!在get方法上加什么注释不让他返回啊?我不知道唉...不过我不是这样干的,我是直接把get方法给干掉了。
探讨

引用:

有一种原因就是你的json返回的数据太多了,struts在包装成json类型的时候出错。 我也出过这种问题,打断点一直执行到最后都成功了,结果ajax返回的状态还是error。后来我把一些不该返回的数据不让他返回,然后就好了。

是不是在action中在数据get方法上加一段代码- - 忘记了 记得第一次用得时候也怎么弄的,那时候是因为把se……