这是我的汇总代码:
var searchCount = 0;
function requestResults() {
$.get("http://www.example.com/example.ashx",
{ i: "test" },
function (data) {
if (data) {
$(data).find("xmlTestNode").each(function (index, item) {
// do someting (1) ...
});
} else {
// dont try to search more than 20 seconds
searchCount += 1;
if (searchCount <= 4) {
setTimeout(function () {
requestResults();
}, 5000);
} else {
searchCount = 0;
// there is no result for 20 seconds searching
};
};
}, "text");
};
此代码从.ashx处理程序获取一些数据。由于处理程序需要搜索和回答可能需要一些时间,因此该函数每隔5秒发送一次@ .get请求。如果处理程序找到了结果,那么就可以了,并且将运行“do something(1)”行。
如果处理程序没有回答20秒,该函数将停止重复其请求。
有时用户可能想在20秒内停止搜索,所以他点击了停止按钮。
如果单击“停止”按钮,我可以停止显示数据,但有没有办法阻止$ .get请求获取数据?类似BREAK的功能。
问题是当用户尝试快速搜索不同的查询(在不到5秒的时间内多次搜索)时,许多$ .get请求被发送到服务器。处理这个问题的最佳解决方案是什么?
答案 0 :(得分:0)
var xhr = $.get( /* Your stuf */); // Start your AJAX
xhr.abort(); // Abort the query
Br