Ajax 响应码200,但回调error

最近有一个朋友问了我些问题,有个问题的原因出在ajax的使用上,具体的状况是,ajax请求值后台接口可以收到,响应200后,success未收到响应值,一般来说响应出200未报错,但是未回调success,那就大多就进入到error了,然后在 error中 alert(),确定确实回调在了 error函数。然后使用浏览器network检验到返回值为 html串,但是 实际上 dataType:json,这就是确定了问题。

想着总结下,就百度了不少写的很好的博客。算是拾人牙慧了。有以下几种情况:

1、dataType与响应类型不一致

这是最常见的问题,比如上面的问题,返回的为 html格式,但是定义的是 json格式,就会回调 error()。一般使用 dataType:json 较多,一定要注意返回值为标准的json格式,有时候多个换行符,或者中文逗号也会回调error()。

2、async请求同步异步问题

这个我也遇到过,ajax默认是异步的(async:ture)。若是做些判断类的需求,明确是同步顺序,一定加上 async:false。

3、ajax请求跨域  

这个没有遇到过,博客搜到的会造成上述问题。

扫描二维码关注公众号,回复: 8919823 查看本文章

4、 data不能不写

   data为空也一定要传"{}";不然返回的是xml格式的。并提示parsererror. data:"{}"

   parsererror的异常和Header 类型也有关系。及编码header('Content-type: text/html; charset=utf8');

5. 传递的参数

    必须是ajax支持的编码格式

6. URL路径问题

    路径不能有中文

3、4、5、6都是网上搜到了,没遇到过也未验证过。

jquery ajax dataType类型

对于 dataType看了 jquery的文档有下几种形式

jquery ajax 回调函数

看了 jquery关于ajax部分的文档,发现自己以前只是用了些皮毛,略知一点点,以后还是多看文档,多使用啊。

发布了73 篇原创文章 · 获赞 78 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/SHIYUN123zw/article/details/84526595