jQuery1.4+版本 ajax 不执行success回调函数,却进入error回调函数

jQuery1.4+版本ajax不执行success回调函数,却进入error回调函数

在jQuery1.4.2版本在使用ajax时存在一个严重问题,如果指定dataType为json,竟然死活不进入success回调函数,值进入error回调函数里面,而其他版本,如1.2.6是正常的。

示例代码如下:

jQuery.ajax({

url:"text.html",

type:"POST",

data:strjson,

success:function(obj){alert(obj)},

error:function(){alert('发生错误')},

complete:function(obj){

if(obj.status==200)alert('有效');

elsealert('无效');

}

});

在jquery的网站找到了在线的api文档看了下,地址:http://api.jquery.com/jQuery.ajax/,发现dataType如下的说明

"json":EvaluatestheresponseasJSONandreturnsaJavaScriptobject.InjQuery1.4theJSONdataisparsedinastrictmanner;anymalformedJSONisrejectedandaparseerroristhrown.(Seejson.orgformoreinformationonproperJSONformatting.)

原来是jquery1.4版本以后对json格式要求非常严格了,要满足json.org网站定义的格式才能执行success回调,其他怪异模式的json字符串都会出错,无法解析返回json数据。说的是1.4+以上的,那为什么下载的1.3.2指定dataType为json时也不能执行success回调呢?

所以在使用ajax的时候需要注意json格式的返回数据时候严格!

正确返回的obj格式为:{"success":true,"id":"1"}就可以正常执行success回调了。

JSON格式总结下,详细的去json.org查看。

1)键名称:用双引号括起

2)字符串:用使用双引号括起

3)数字,布尔类型不需要使用双引号括起

相关推荐