最近有一个朋友问了我些问题,有个问题的原因出在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请求跨域
这个没有遇到过,博客搜到的会造成上述问题。
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部分的文档,发现自己以前只是用了些皮毛,略知一点点,以后还是多看文档,多使用啊。