ajax老是执行error回调而不执行success回调

前端之家收集整理的这篇文章主要介绍了ajax老是执行error回调而不执行success回调前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近公司的一个老项目整改,jquery版本统一为

<script language="javascript" src="${pageContext.request.contextPath}/common/js/jquery-1.9.1.min.js"></script>

结果出现标题的现象,经过网络搜索,找到以下文章,作为标记
最近在看jQuery的API文档,在使用到jQuery的ajax时,如果指定了dataType为json,老是不执行success回调,而是执行了error回调函数,极度郁闷。后面改为1.2.6版本可以执行。

  然后继续下载了几个jquery版本,如1.3.2,1.4.0的,指定dataType为json都不能执行success回调,只有小于1.3版本的才能执行success回调。

  最后去jquery的网站找到了在线的api文档看了下,地址:http://api.jquery.com/jQuery.ajax/ ,发现dataType如下的说明
  “json”: Evaluates the response as JSON and returns a JavaScript object. In jQuery 1.4 the JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown. (See json.org for more information on proper JSON formatting.)

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

  怪不得不执行,原来我返回的是{success:true,id:1} 这种不规则的字符串,不是严格的json格式,改成{“success”:true,”id”:”1”} 就可以正常执行success回调了。
  
  JSON格式总结下,详细的去json.org 查看。
  1)键名称:用双引号 括起
  2)字符串:用使用双引号 括起
  3)数字,布尔类型不需要 使用双引号 括起

原文地址:http://www.jb51.net/article/32540.htm

原文链接:/ajax/162410.html

猜你在找的Ajax相关文章