servert 返回josn类型数据,前台使用jqurey ajax访问这个servlet,但$.ajax的error回调函数却执行了,如下:
$.ajax({
type:"POST",
url: "servlet/Add",
dataType:"json",
data:{"a":"你好"},
error:function(i){alert("error:"+i.responseText)}//这里成功的打印了从后台返回的数据{'a':'hello'}
//如果在error回调方法中执行,alert(arguments[1]),输出parseerror,转换错误,设置了dataType:"json",应该不会出这个问题散??
});
以下是响应头信息
Server Apache-Coyote/1.1
Content-Type text/plain;charset=UTF-8
Transfer-Encoding chunked
Date Wed, 18 May 2011 15:34:05 GMT
servert:
response.setContentType("text/plain;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.println("{'a':'hello'}")
求解???jq用的是1.4.2,在公司也用的这个版本,应该没有bug。。

解决方案 »

  1.   

    把dataType:"json"这句话去掉再试试,以前我也遇到过这个问题,不去设置dataType的类型,让dataType默认就好了。
      

  2.   

    说起来还真奇怪,我用同版本的jq,后台用python+django返回就没有任何问题这个parseerror还真不知道怎么出来的。。虽然已结贴,看到的朋友还是可以研究下。分不重要,你懂的。
      

  3.   

    找到答案了,后台:response.setContentType("text/json;charset=UTF-8");
    或response.setContentType("text/plain;charset=UTF-8")都可以,
    jq也可以设置dataType="json",
    关键在于这两个地方:
    out.print("{\"s\":\"hello\"}");//这样写可以
    out.print("{'s':'hello'}");//jq parseerror
    这原因终于找到了,可这样的原因说不过去啊囧