Javascript 如何在启动新请求之前中止xmlhttprequest?

Javascript 如何在启动新请求之前中止xmlhttprequest?,javascript,ajax,web-applications,xmlhttprequest,Javascript,Ajax,Web Applications,Xmlhttprequest,我得到了一个cgi脚本,它根据提交的查询字符串执行搜索。 那很好用。 但由于搜索可能需要一些时间,用户可能会启动另一个搜索。我希望在开始第二次搜索之前中止第一次搜索,但如果在AJAXRequest函数的开头插入xmlhttp.abort(),则cgi脚本根本无法启动。 有人能告诉我怎么做吗 提前谢谢 下面是AJAX代码片段 var xmlhttp; function AJAXRequest() { if (window.XMLHttpRequest) {// code for IE7+,

我得到了一个cgi脚本,它根据提交的查询字符串执行搜索。 那很好用。 但由于搜索可能需要一些时间,用户可能会启动另一个搜索。我希望在开始第二次搜索之前中止第一次搜索,但如果在AJAXRequest函数的开头插入
xmlhttp.abort()
,则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();
}
是的,这是用于AJAX请求中止的正确方法。 在我看来,你的问题更多的是设计问题,而不是技术问题。 因此,我的建议是查看用户与应用程序交互的流程。 例如,经典的解决方案是在请求未完成时显示进度条或微调器并禁用“搜索”按钮,然后在成功或出错时恢复此状态。

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

xmlhttp.open(“POST”,“./cgi-bin/search.exe?”+queryString,true)
-实际上不需要
true
参数,因为默认情况下该值为
true
。@EvgeniyNaydenov我删除了第三个参数谢谢你的建议。我会考虑类似的事情,但在开始新的搜索之前,是否没有办法先中止活动搜索?(以防有人输入错误的搜索信息)我刚刚发现,如果在发送另一个请求后使用abort(),中止效果会很好。但是如果我在函数的开头使用abort(),它似乎根本不会发送请求。你有什么建议吗?我发布的链接上的文档说:“如果请求已经发送,则中止请求。”。因此,
abort()
方法在
send()
之前不起作用。因此,如果您正在进行某种类型的自动完成,您应该在发送请求之前阻止用户界面,并且/或者在输入之后使用一些超时。