0

我得到了一个 cgi 脚本,它根据它提交的查询字符串执行搜索。这一切都很好。但是由于搜索可能需要一些时间,并且用户可能会开始另一个搜索。我希望在开始第二次搜索之前中止第一次搜索,但是如果我xmlhttp.abort()在 AJAXRequest 函数的开头插入 a ,则 cgi 脚本根本不会启动。谁能告诉我如何执行此操作?

提前致谢!

这是 AJAX 代码片段

var xmlhttp;
function AJAXRequest()
{

   if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
   window.document.getElementById("resultlist").innerHTML=xmlhttp.responseText;
}
}
var queryString= "from=03-01-2006&to=04-30-2006&pattern=345";
xmlhttp.open("POST","../cgi-bin/search.exe?"+queryString);
xmlhttp.send();
}
4

2 回答 2

0

是的,XMLHttpRequest.abort()是用于 AJAX 请求中止的正确方法。在我看来,您的问题更多的是设计问题,而不是技术问题。因此,我的建议是查看用户如何与您的应用程序交互的流程。例如,经典的解决方案是在您的请求未完成时显示进度条或微调器并禁用“搜索”按钮,并在成功或错误时恢复此状态。

于 2012-12-06T11:08:59.677 回答
0

我发现了我的问题。我试图中止刚刚创建的请求对象。该对象必须是全局的。至少这是我看到如何实现这一目标的唯一方法。

于 2012-12-06T12:22:22.007 回答