这里是我的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