我正在开发一个程序,通过使用XHR Request将post方法的用户id发送到processId.php来检查用户ID是否存在。我首先在id数组中的for循环中尝试了XHR请求,但是它杀死了浏览器,因为它包含数千个元素,因为一次有数千个XHR请求。然后我在StackOverflow上发了一篇帖子,说我不应该在for循环中使用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>
答案 0 :(得分:0)
试试这个
<script>
var userIds = <?php echo($js_array_id) ?>;
function processNext(i) {
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>";
i++;
if(i<userIds.length){processNext(i);}
}
}
}
http.send(params);
}
processNext(0);
答案 1 :(得分:0)
说,你怎么想通过xhr检查成千上万的用户id?