Javascript AJAX:使用多个表单条目删除多个服务器文件

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

我有一个表单,其中包含一个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;
函数deleteFiles()
{
var-xmlhttp;
if(window.XMLHttpRequest)
{
xmlhttp=新的XMLHttpRequest();
}
其他的
{
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}  
Allegements=document.getElementsByName(“id”);
对于(x=0;x
听起来请求的发送速度太快。请尝试添加
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;
函数deleteFiles()
{
var-xmlhttp;
if(window.XMLHttpRequest)
{
xmlhttp=新的XMLHttpRequest();
}
其他的
{
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}  
Allegements=document.getElementsByName(“id”);
xmlhttp.async=false;
对于(x=0;x

让我知道您的发现

如果我按照您所示的那样做并且有多个id,则服务器上只会删除一个文件。我尝试了以下操作:xmlhttp.open(“GET”,“/cgi-bin/delete.py?id=“+allegements[x].value,false);然后删除服务器上的所有文件。为什么必须将其设置为false才能删除所有文件?编辑:false参数也会这样做。将async属性设置为false。它们被删除是因为在for循环中,您正在向该服务发送请求。for循环运行时,xmlhttp正在发送请求速度如此之快,有些甚至无法完成。不完全确定原因,但async属性设置为false意味着,不是异步发送请求(同时…)而是同步发送请求(以行…)是的,将false添加到实际的xmlhttp.open()中命令起作用。我是AJAX新手。我应该检查每个发送命令的readyState吗?需要澄清的是:xmlhttp.async=false导致1个文件被删除,但并不是所有文件都被删除。将false添加到xmlhttp.open()将删除所有文件,这正是我想要的。