原文:http://bbs.csdn.net/topics/330144067

环境: jquery1.4 + struts2.0.14

页面:

XML/HTML code
 
?
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>



后台:

Java code
 
?
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 函数,没怎么看
   明白。。

   请各位大虾支点招。谢谢。