0

我有一个包含可变数量文本框的表单,其中包含一个 id。当用户退出页面时,服务器上的文件会被 python 脚本 (delete.py) 删除。要删除的文件的文件名包含 id,因此必须将 id 传递给 python 脚本。如果我的表单只有一个 id,那么一切正常,服务器上的文件将被删除。如果我的表单有多个 id 字段,则不会删除任何文件。如果我使用 firebug 单步执行代码,则无论 id 字段的数量如何,文件都会被删除。我不明白发生了什么事。任何帮助将不胜感激。我的 onbeforeunload 方法如下。

function deleteFiles()
  {
  var xmlhttp;

  if (window.XMLHttpRequest)
  {
    xmlhttp=new XMLHttpRequest();
  }
  else
  {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }  

  allElements = document.getElementsByName("id");
  for (x=0; x < allElements.length; x++)
  {
    xmlhttp.open("GET","/cgi-bin/delete.py?id=" + allElements[x].value,true);
    xmlhttp.send();
   }  

window.onbeforeunload = deleteFiles;
4

1 回答 1

0

听起来请求发送得太快了。尝试添加
xmlhttp.async = false;

function deleteFiles()
  {
  var xmlhttp;

  if (window.XMLHttpRequest)
  {
    xmlhttp=new XMLHttpRequest();

  }
  else
  {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }  

  allElements = document.getElementsByName("id");

  xmlhttp.async = false;

  for (x=0; x < allElements.length; x++)
  {
    xmlhttp.open("GET","/cgi-bin/delete.py?id=" + allElements[x].value,true);

    xmlhttp.send();
   }  

window.onbeforeunload = deleteFiles;

让我知道你的发现

于 2012-09-25T18:43:44.317 回答