我试图将一组记录保存到 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;
}
最佳答案
这段代码有很多问题。以下是我发现的第一批:
只有当您想要迭代对象中的所有字段时,才应使用
for (x in object)
语法。在这种情况下,您想要迭代数组,因此您应该这样做:for (var rowindex = 0; rowindex < globalObj.AddedRows.length; rowindex++) { }
执行 HTTP POST 时,不应将要更改的数据放入 URL 中。将其放入请求正文中 - 作为 xmlhttp.send() 的参数。您实际上是显式传递内容长度 - 该长度应该是您传递给 xmlhttp.send() 的数据的长度 - 因此通过传递 NULL 这几乎肯定是您的主要错误。
与其使用 Firebug,不如使用 xmlhttp.onreadystatechange 来确定哪些请求成功或失败。不要以为一旦你第一次调试了它,从那时起它就一定会成功。处理错误。
关于Javascript XMLHttpRequests 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3035811/