XMLHttpRequest输出未显示

XMLHttpRequest output not shown

本文关键字:显示 输出 XMLHttpRequest      更新时间:2023-09-26

这是我的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请求的输出而更新。只有用户上次单击的按钮才能获得http请求的输出。

PHP脚本绝对没有问题,我只是把它作为参考。delfile脚本只发送"File Delted"。

使用@torazaburo建议的局部变量求解。

您未能将xmlhttp声明为函数的本地,这意味着它在多个请求之间共享,这会导致灾难。

在进行此操作时,还请声明函数的$div$location是本地的。此外,请删除这些变量名称的$前缀,因为这种做法会腐蚀大脑。

如果你在函数的顶部放了一个"use strict;",那么你声明变量的失败就会被发现。