Javascript XMLHttpRequests 循环?

标签 javascript loops xmlhttprequest

我试图将一组记录保存到 mysql 数据库中,但除了最后一次保存之外,我总是在 firebug 中收到中止消息。如何使用 XMLHttpRequest 循环保存记录?这是我的代码:

function savingContent()
{
   if (window.XMLHttpRequest)
   {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();

   }
   else
   {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }

   var rowindex = 0;

   for (x in globalObj.AddedRows)
   {
      var rowData = "?q=" + globalObj.AddedRows[rowindex];

      xmlhttp.open("POST", "insertRowData.php"+rowData, true);
      xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
      xmlhttp.setRequestHeader("Content-Length",rowData.length); 
      xmlhttp.send(null);
      rowindex += 1;
}

最佳答案

这段代码有很多问题。以下是我发现的第一批:

  1. 只有当您想要迭代对象中的所有字段时,才应使用 for (x in object) 语法。在这种情况下,您想要迭代数组,因此您应该这样做:

    for (var rowindex = 0; rowindex < globalObj.AddedRows.length; rowindex++) {
    }
    
  2. 执行 HTTP POST 时,不应将要更改的数据放入 URL 中。将其放入请求正文中 - 作为 xmlhttp.send() 的参数。您实际上是显式传递内容长度 - 该长度应该是您传递给 xmlhttp.send() 的数据的长度 - 因此通过传递 NULL 这几乎肯定是您的主要错误。

  3. 与其使用 Firebug,不如使用 xmlhttp.onreadystatechange 来确定哪些请求成功或失败。不要以为一旦你第一次调试了它,从那时起它就一定会成功。处理错误。

关于Javascript XMLHttpRequests 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3035811/

相关文章:

JavaScript:将内部函数的名称设置为其分配给的变量的名称

mysql - MySQL-从版本控制数据库获取最新版本的文件内容

python - 循环遍历包含字典的嵌套列表

php - 尝试使用 XHR 2 和 PHP 上传多张图片

javascript - 使用 XMLHttpRequest 上传大文件时的进度条

javascript - XMLHttpRequest onreadystatechange readyState 1 和 2 之间的长延迟

javascript - 如何将 php heredoc 转换为 javascript 变量?

javascript - 在 JS 中将 Tick 转换为日期

Python - 迭代整数列表

javascript - jQuery 一个函数没有按预期工作