我有一个cgi脚本,根据它提交的查询字符串执行搜索。
这一切都很好。
但由于搜索可能需要一些时间,用户可能会开始另一次搜索。我希望第一次搜索在第二次搜索开始之前中止,但如果我在AJAXRequest函数的开头插入xmlhttp.abort()
,则cgi-script根本不会启动。
有谁能告诉我这是如何进行的?
提前致谢!
这是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();
}
答案 0 :(得分:0)
是的,XMLHttpRequest.abort()
是用于AJAX请求中止的正确方法。
在我看来,你的问题是更多的设计问题,而不是技术问题。
因此,我的建议是查看用户与您的应用程序交互的流程。
例如,经典的解决方案是显示进度条或微调器,并在请求未完成时禁用“搜索”按钮,并在成功或错误时恢复此状态。
答案 1 :(得分:0)
我发现了我的问题。 我试图中止刚刚创建的请求对象。对象必须是全局的。至少这是我看到如何实现这一目标的唯一方式。