这是我的JavaScript函数: -
解决了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-request的输出进行更新。只有用户最后点击的按钮才能获得http请求的输出。
PHP脚本完全没有问题,我只是给它以供参考。 delfile脚本只发送“File Delted”。
使用@torazaburo建议的局部变量解决。
答案 0 :(得分:1)
您未能在函数中声明xmlhttp
本地,这意味着它在多个请求之间共享,这是一个灾难的处方。
在您使用此功能时,请同时声明$div
和$location
本地功能。另外,请删除这些变量名称的$
前缀,因为已知这种做法会腐蚀大脑。
如果您设置了“use strict”,那么您将无法声明变量。在你的功能的顶部,你应该。