我是新來的ajax。我有一個函數來插入項目列表到SQL使用PHP頁面,但它只插入最後一項。請看下面的代碼:如何發送多個Ajax請求?
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(itemid); 。 。 。 。 items.push(itemid); //然後只發送它? xmlhttp.open(「POST」,「submitItem.php?items =」items,true); xmlhttp.send();
然後在php文件中,我應該這樣做嗎?
$items = $_GET['items'];
每個循環迭代都會覆蓋剛剛在上一次迭代中開始的正在進行的HTTP會話。你的'警報'延遲這個過程足以(有時)使會話完成。 –
我可以想象得到。我嘗試使用setTimeout來延遲發送請求,它不起作用... –