0
我有一个窗体包含一个可变数量的文本框包含一个id。当用户退出该页面时,服务器上的文件将被一个python脚本(delete.py)删除。要删除的文件的文件名包含id,因此必须将id传递给python脚本。如果我的表单有一个单一的ID,那么一切正常,并且服务器上的文件被删除。如果我的表单有多个ID字段,则不会删除任何文件。如果我使用萤火虫遍历代码,则无论id字段的数量如何,文件都会被删除。我不明白发生了什么事。任何帮助将不胜感激。我的onbeforeunload方法如下。AJAX:使用多个表单条目来删除多个服务器文件
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;
如果我这样做,你展示,并有多个ID,只有1个文件被从服务器上删除。 –
我试过这个:xmlhttp.open(“GET”,“/ cgi-bin/delete.py?id =”+ allElements [x] .value,false);然后服务器上的所有文件都被删除。为什么这必须设置为false才能删除所有文件? –
编辑:那个虚假的参数做同样的事情。将async属性设置为false。它们会被删除,因为发生了什么,在for循环中,您正在向该服务发送请求。当for循环运行时,xmlhttp发送请求的速度如此之快,以至于它们中的一些甚至没有发送请求。不完全确定为什么,但async属性设置为false意味着,而不是异步发送请求(在同一时间...)同步发送它们(行...) – sircapsalot