我写了个火狐调用ajax返回json的方法,每次都是在执行到代码var json = eval("("+data+")");的是时候抛出如下的错误,但是在ie下正常
POST http://127.0.0.1:8080/sshtest/test/testAjax.action

200 OK
7ms
jquery-1.8.3.js (第 8434 行)
头信息Post响应XMLCookies[{"id":"1","name":"name1"}]SyntaxError: missing ] after element list
([object XMLDocument])
页面脚本代码如下$.ajax({
type : "POST",
//dataType : "json",
url : "testAjax.action",
data : {
'users.id' : 49
},
success : function(data) {
var json = eval("("+data+")");
}
}); 
后台action代码如下@Action(value = "/testAjax")
public void testAjax() throws Exception {
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> map = new HashMap<String, String>();
map.put("id", "1");
map.put("name", "name1");
list.add(map); JSONArray jsonArray = JSONArray.fromObject(list); //response.setContentType("application/json;charset=UTF-8");
//response.setCharacterEncoding("UTF-8");
response.getWriter().print(jsonArray.toString());
}

解决方案 »

  1.   

    结贴了,问题解决了
    使用 result = eval(" ("+data+") ");时报如下错误错误: SyntaxError: missing ] after element list 解决方案:不使用eval转,而直接使用data。原因:$.ajax( {
                            type : "post",
                            dataType : "json", //这里已经定义数据格式jquery调用时会检测到,从而直接把返回格式当做json处理,所以再转化会报错。