ajax 请求出现的问题?
请问下面的代码,输出的结果是:"/b undefined" "/b undefined"
var urls = ["/a", "/b"];
for (var i = 0; i < urls.length; i++) {
var url = urls[i];
$.ajax({
url: url,
type: "GET",
complete: function(data) {
console.log(url, urls[i]);
}
});
}
加上 async 后,结果又不一样: "/a /a" "/b /b"
var urls = ["/a", "/b"];
for (var i = 0; i < urls.length; i++) {
var url = urls[i];
$.ajax({
url: url,
type: "GET",
async: false,
complete: function(data) {
console.log(url, urls[i]);
}
});
}
在公司中,使用 ajax 获取某个接口的信息,地址为内部地址:http://192.168.88.100
回到宿舍后,内部地址是不能连接的,使用 async: true 和 timeout: 3000 来进行 ajax 请求时发现浏览器出现了卡死的状态,不知道有没有出现过同样的问题:
其实,是在做 chrome 的一个插件,如 @浪际天涯 说的网络变化导致请求未返回,从而出现了卡死的现象。最后,将 ajax 请求放在一个函数内,并去掉 async,加上 timeout 就正常了:
function main() {
var urls = ["http://server1/api/test1", "http://server2/api/test2"];
for (var i = 0; i < urls.length; i++) {
var url = urls[i];
getAjax(url, urls, i);
}
}
function getAjax(url, urls, i) {
$.ajax({
url : url,
type : "GET",
timeout: 3000,
complete: function(data) {
if (i == urls.length - 1) {
console.log("Over");
}
console.log(url, urls[i]);
}
});
}
东方馅挂炒面
11 years, 11 months ago