這裏是我的JavaScript函數: -XMLHttpRequest的輸出未顯示
解決JavaScript函數: -
function delfile(fileid) {
var div = "fileid_" + fileid;
var location = "/delfile/" + fileid;
if (window.XMLHttpRequest)
{
var xmlhttp=new XMLHttpRequest();
}
else
{
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById(div).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST", location, true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("");
}
以下是我從PHP生成: -
echo "<td><div id='fileid_{$id}'><button onclick='delfile({$id})'>Delete File</button></div></td>";
我的問題是,當用戶同時點擊2-3個鏈接時,http請求通過javascript發送,並且服務器上的文件被刪除,但div id不會更新http請求的輸出。只有用戶最後點擊的按鈕纔會獲得http請求的輸出。
PHP腳本絕對沒有問題,我只是給它參考。 delfile腳本只發送「File Delted」。
通過使用@torazaburo建議的局部變量來解決。
請刪除MS cruft。它僅適用於IE6及更低版本。你也可以刪除所有其他的XMLHttpRequest樣板文件,我們知道它是如何工作的。出於好奇,你寫了一本8年的書嗎? – 2014-09-28 18:05:02
我希望它能夠在IE 6上工作,所以無法刪除它。 – 2014-09-28 18:16:38
所有發達國家的IE6份額均低於1%。請參閱https://www.modern.ie/en-us/ie6countdown。當MS停止XP支持時,它會很快降到零。不管你是否想保留它取決於你,但請不要堵塞你的代碼示例與這些不相關的細節。 – 2014-09-28 18:33:50