struts2导致Ajax错误

我在struts.xml中有这个配置

    

这是我的Action类

 ... try{ act.update(); }catch(Exception e){ Logger.print(MessageType.ERROR,"Update failed "+e.getMessage()); return ForwardResult.ERROR; } return ForwardResult.SUCCESS; 

最后,这是jQuery ajax函数

 $.ajax({ url: 'updateAction.action', traditional:true, data : { 'actionId': id, 'actionName': name, 'actionDescr':descr }, success: function(data) { $('#act_'+id).html(data.name); $('#des_'+id).html(data.descr); $('#update_'+id).html(data.update); $('#userId_'+id).html(data.userId); $('#mdf_'+id).css("display","block"); $('#save_'+id).css("display","none"); $('#diag_'+id).html(data.result); }, error: function(data){ alert("AZZ!"); $('#diag_'+id).html(data.result); } }); 

当action成功更新数据时,没有问题,ajax函数执行“success”语句,但是当action抛出exception时,ajax不再执行“error”语句而是“success”…

为什么?

谢谢提前

M.

因为请求没有生成错误,“error”表示服务器返回HTTP错误代码。 服务器响应可以以不同的方式指示错误,例如错误属性。

您可以使用Firebug或类似的东西检查响应代码和内容; 如果你期望的东西不是它发回的东西,那么在问题中添加一些细节,说明它返回的内容,以及你想要看到的内容。

最简单的选择是设置结果的statusCodeerrorCode ,如JSON插件文档中所述 。 (假设这是你正在使用的JSON插件。)

你好Ging3r

通常,JSP网站需要JSON插件来编码/解码JSON消息。

JSON.simple是JSON插件的一个很好的例子。 JSON.simple网站还提供了在JSP网站上设置JSON的教程。

如果您更喜欢使用特定于Struts的插件,那么在Apaches网站上有几个针对Struts2的JSON插件 。

编辑

我绝对不是JSP的专家,对你正在使用的JSON Struts插件一无所知,尽管我对json-simple有点了解。

不过,以下两个例子对我来说很有意义。 这些例子来自上面提到的教程。

示例1 – 服务器端JSP编码

 service.jsp: <%@page contentType="text/html; charset=UTF-8"%> <%@page import="org.json.simple.JSONObject"%> <% JSONObject obj=new JSONObject(); obj.put("name","foo"); obj.put("num",new Integer(100)); obj.put("balance",new Double(1000.21)); obj.put("is_vip",new Boolean(true)); obj.put("nickname",null); out.print(obj); out.flush(); %> 

示例2 – 客户端XMLHttpRequest

 client.html:        Click here to get JSON data from the server side  

您可以在此处找到有关这些示例的更多信息。

PS!

您还应该研究Dave Newton建议的解决方案。 他比我经验丰富,知道他在说什么。