我正在处理一个程序,该程序通过使用XHR请求通过post方法向processId.php发送用户标识来检查用户标识是否存在。我首先在ID数组中的for循环中尝试了XHR请求,但是它杀死了浏览器,因为它由数千个元素组成,因为一次创建了数千个XHR请求。然后我在StackOverflow上找到一篇文章,说我不应该在for循环中使用XHR请求,而应该在函数中调用函数,以便我编写以下代码。该程序似乎工作,但杀死浏览器,因为仍然有成千上万的请求。当前请求完成后一次XHR请求
我想弄清楚一个星期后,如何在完成当前/进程内XHR请求后一次完成一个XHR请求。任何帮助?我可以为此创建一个完整功能的任何解决方案。
PS:我不想使用jQuery。
<?php
$php_array_id = [element-1,element-2.........,element-n];
$js_array_id = json_encode($php_array);
echo "var userIds = ". $js_array_id . ";\n";
$url = "http://example.com/idProcess.php";
?>
<script>
function processNext(i) {
if (i < userIds.length) {
var http = new XMLHttpRequest();
var url = "<?php echo $url ?>";
var params = "id=" + userIds[i];
http.open("POST", url, true);
http.onreadystatechange = function() {
if(this.readyState == 4 && this.status == 200) {
if(this.responseText){
document.getElementById("reports").innerHTML += "<div>ID = " + this.responseText + " Exists</div>";
}
}
}
http.send(params);
i++;
processNext(i);
}
}
processNext(0);
</script>
你能解释一下主要的变化吗?我认为这个函数应该在statechange函数中调用?对? –
是的,所以另一个请求会在前一个请求结束后立即发送。 – dormouse
是的..现在它正在发送请求,当一个结束。谢谢。 –