XMLHttpRequest输出未显示

时间:2014-09-28 17:58:35

标签: javascript

这是我的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建议的局部变量解决。

1 个答案:

答案 0 :(得分:1)

您未能在函数中声明xmlhttp本地,这意味着它在多个请求之间共享,这是一个灾难的处方。

在您使用此功能时,请同时声明$div$location本地功能。另外,请删除这些变量名称的$前缀,因为已知这种做法会腐蚀大脑。

如果您设置了“use strict”,那么您将无法声明变量。在你的功能的顶部,你应该。