我知道这是一个愚蠢的问题,但我想问一下如何将内容保存到xmlhttpRequest中的数组中并在之后使用它们。
onlinestatus = new Array(count);
for (var i = 0; i <= count; i++) {
GM_xmlhttpRequest({
method: 'GET',
url: 'http://www.website.com/player/' + player[i] + '/details.php',
onload: function(responseDetails) {
buddypage = jQuery(responseDetails.responseText);
online = jQuery("span#OnlineStatus", buddypage);
onlinestatus[i] = online.text();
}
});
GM_log("Current: " + onlinestatus[i]);
}
答案 0 :(得分:2)
您应该知道ajax请求将来会在某个未知时间返回 您只能在ajax请求的回调中使用该数组。
AJAX- 异步 JavaScript和XML
答案 1 :(得分:1)
两件事将阻止这种工作:Web请求将是异步的,并且值将全部存储在数组中的相同位置。
假设count = 2:
,这是顺序发生的事情i = 0
i < count
为真,继续循环result[0]
i = 1
i < count
为真,继续循环result[1]
i = 2
i < count
,为false,退出循环result[i]
,因此请设置result[2] = "foo"
result[i]
,因此请设置result[2] = "bar"
这意味着结果数组最终为[undefined, undefined, "bar"]
。数组的最后一个值可以是foo或bar,具体取决于首先完成的Web请求。无论哪种方式,当web请求完成时,i
将被设置为错误的值,结果将被记录,因此看起来结果数组是空的。