当前请求完成后一次一个 XHR 请求
One XHR Request at a time after completion of current request
我正在开发一个程序,通过 post 方法使用 XHR 请求将用户 ID 发送到 processId.php 来检查用户 ID 是否存在。我首先在 id 数组的 for 循环中尝试了 XHR 请求,但它杀死了浏览器,因为它包含数千个元素,因为一次发出了数千个 XHR 请求。然后我在 Whosebug 上发现了一个 post,它说我不应该在 for 循环中使用 XHR 请求,而是应该在函数中调用该函数,所以我编写了以下代码。该程序似乎可以运行,但会终止浏览器,因为仍然发出了数千个请求。
在完成 current/in-process 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>
试试这个
<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);
的精彩世界
喂,你怎么会想通过一个 xhr 检查成千上万的用户 ID?
我正在开发一个程序,通过 post 方法使用 XHR 请求将用户 ID 发送到 processId.php 来检查用户 ID 是否存在。我首先在 id 数组的 for 循环中尝试了 XHR 请求,但它杀死了浏览器,因为它包含数千个元素,因为一次发出了数千个 XHR 请求。然后我在 Whosebug 上发现了一个 post,它说我不应该在 for 循环中使用 XHR 请求,而是应该在函数中调用该函数,所以我编写了以下代码。该程序似乎可以运行,但会终止浏览器,因为仍然发出了数千个请求。
在完成 current/in-process 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>
试试这个
<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);
喂,你怎么会想通过一个 xhr 检查成千上万的用户 ID?