Javascript For循环中的XMLHttpRequest
这段代码应该在多个网页中循环,找到每个网页上的所有链接,并在控制台中列出它们,但它似乎只列出了最后一个网页(fakeURL.com/735)中的链接 如何获取Javascript For循环中的XMLHttpRequest,javascript,for-loop,xmlhttprequest,Javascript,For Loop,Xmlhttprequest,这段代码应该在多个网页中循环,找到每个网页上的所有链接,并在控制台中列出它们,但它似乎只列出了最后一个网页(fakeURL.com/735)中的链接 如何获取console.log(url)为每个迭代工作,而不仅仅是最后一个迭代(当i=735时) 用于(i=0;i您的问题是,您正在为所有ajax调用重用相同的xhrs变量。因此,当触发onreadystatechange事件时,一次执行的所有调用都无法找到属于其特定请求的xhrs变量。因此,它们最终都会查看xhrs.readyState我是最后一
console.log(url)代码>为每个迭代工作,而不仅仅是最后一个迭代(当i=735时)
用于(i=0;i您的问题是,您正在为所有ajax调用重用相同的xhrs
变量。因此,当触发onreadystatechange
事件时,一次执行的所有调用都无法找到属于其特定请求的xhrs
变量。因此,它们最终都会查看xhrs.readyState
我是最后一个请求,所以你只能看到最后一个请求完成
您应该能够切换到使用此
来引用生成onreadystatechange
事件的请求:
for(i = 0; i <= 735; i += 15) {
var xhrs = new XMLHttpRequest();
xhrs.open("get", 'http://fakeURL.com/' + i, true);
xhrs.onreadystatechange = function()
{
if (this.readyState == 4)
{
$(this.responseText).find('a').each(function()
{
var url = $(this).attr('href');
console.log(url);
});
}
}
xhrs.send();
}
for(i=0;i)你应该看到:顺便说一句,$
似乎是jQuery,那么为什么不使用$.ajax()
?你的代码启动了一大堆ajax调用,然后它们都在稍后完成。你到底有什么问题?@jfriend00我需要控制台.log(url)
在每次迭代中都会发生。现在它只在最后一次迭代中发生。
for(i = 0; i <= 735; i += 15) {
var xhrs = new XMLHttpRequest();
xhrs.open("get", 'http://fakeURL.com/' + i, true);
xhrs.onreadystatechange = function()
{
if (this.readyState == 4)
{
$(this.responseText).find('a').each(function()
{
var url = $(this).attr('href');
console.log(url);
});
}
}
xhrs.send();
}