原文:http://bbs.csdn.net/topics/330144067
环境: jquery1.4 + struts2.0.14
页面:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<script src="jquery/jquery.js" type="text/javascript"></script> <script src="jquery/jquery.json-2.2.js" type="text/javascript"></script> <script type="text/javascript" language="javascript"> function doAjax() { $.ajax({ type: "post", url: "ajaxAction.action", cache:false, dataType:'json', success: function(data) { alert($.evalJSON(data).info);}, error:function(){alert('error');} }); } </script> |
后台:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
public class AjaxAction extends ActionSupport { @Override public String execute() throws Exception { HttpServletResponse resp = ServletActionContext.getResponse(); //resp.setContentType("application/json;charset=utf-8"); resp.getWriter().write("{total:100,info:\"ttttttttt\"}"); return NONE; } } |
问题: 如果在ajax配置项中去掉dataType属性就可以请求成功, 如果设置了dataType=json的情况下就始终执行
error 对应的函数;
我在网上搜索了两个小时,共有如下两种解决方案:
1. 集成struts2的 json-plugin 插件 (google出品), 经过测试:【成功】
2. 改变ajax配置项的contentType为 "application/json" , 后台的response也设置 contentType = "application/json",
经过测试:【失败】
我现在想在不使用json-plugin的情况下,让上面代码中的配置项可以成功跳转到 success 函数。 如果可以顺便讲解一下jquery中ajax的这个dataType的意义,就更好了。。我看jquery源码中的 ajax 函数,没怎么看
明白。。
请各位大虾支点招。谢谢。