我是ajax的新手。我有一个函数,使用php页面将项目列表插入到sql中,但它只插入最后一项。请看下面的代码:
function submitItems() {
...
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
if (xmlhttp.responseText != "Item Sold")
alert(xmlhttp.responseText);
}
}
for (i=0;i<rows.length;i++) {//a loop to send multiple requests
xmlhttp.open("POST","submitItem.php?itemid="+itemid,true);
xmlhttp.send();
}
}
循环将请求发送到执行插入的php页面,但只处理最后一个请求。如果我在循环中放置一个alert(),它每次弹出一个窗口,并且每个项目都被插入,但是,保持弹出窗口是很烦人的。还有其他解决方案吗?
或者,正如第一个回复所说,我只发送一个请求,其中包含一个存储列表的数组。但我不知道如何将数组作为参数传递。我可以这样做吗?
var items = new array(); items.push(商品ID); 。 。 。 。 items.push(商品ID); //然后发送它? xmlhttp.open( “POST”, “?submitItem.php项=” 项,TRUE); xmlhttp.send();
然后在php文件中,我应该这样做吗?
$items = $_GET['items'];
答案 0 :(得分:3)
使用for循环生成一个项目数组(在每次迭代时将不同的itemid
推入数组中),然后只进行一次AJAX调用,在其中将所有项目插入到数据库中。这种方式还可以优化您的网站并节省带宽。