{readyState: 0, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeTyp

在进行ajax请求的时候报错如下:

{readyState: 0, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}

在ajax的返回结果中,自己任何数据都没有获得,所以上网百度,仍然没有结果,对于这个错误,每个人的情况也不一样,所以我就开始仔细的分析自己的程序,同样的服务接口在别的ajax中,可以正常返回数据,而且自己本次的ajax请求,在服务器端,能正常的显示响应数据和状态。所以这个问题肯定是出在客户端,在客户端,自己的ajax唯一的不同就是,自己内嵌了一个ajax和服务器通信,所以我觉得问题肯定出在这里。

      然后百度ajax嵌套的问题,果不然,在ajax进行嵌套的时候,由于异步的原因,里面的ajax将获取不到服务器的返回信息。现在知道自己的问题所在了就说说,解决问题的几种办法:

第一种

描述:如果条件许可,把两次请求都放在服务端处理掉一起发回来,这些就在客户端只有一次ajax

优点:代码放在服务端,安全性比较,且服务端处理速度较快

缺点:可能请求的数据格式是json,这样在服务端处理JSON数据还需要对JSON进行反序列化,这样就比较麻烦

第二种

描述:是我第一次解决这个问题的时候用的比较蠢的办法,第一次请求的ajax,循环值PUSH到公共变量中去,然后用这个公共变量作为参数去请求第二个ajax

优点:节省开销

缺点:这样写的确有点蠢...除了蠢之外我再补充一点这样做第二次ajax只能是自己去请求自己服务器,如果是别人的服务不可能给你拆分参数

第三种

描述:使用async falseajax默认async是为ture的,当async: true 时,ajax请求是异步的。但是其中有个问题:ajax请求和其后面的操作是异步执行的,那么当页面还未执行完,就可能已经执行了 ajax请求后面的操作。当async:false时,ajax请求为同步,这时Ajax请求将整个浏览器锁死,直到请求结束


你可能感兴趣的:(js)