停止jQuery.get方法以获取数据

时间:2014-09-17 17:19:45

标签: javascript jquery ajax get

这是我的汇总代码:

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请求被发送到服务器。处理这个问题的最佳解决方案是什么?

1 个答案:

答案 0 :(得分:0)

你的意思是?

var xhr = $.get( /* Your stuf */); // Start your AJAX
xhr.abort();  // Abort the query

Br