如何在javascript中杀死或取消异步调用?

时间:2014-03-03 13:47:03

标签: javascript asp.net-mvc-4

我正在向MVC控制器发送以下请求:

var datum = { param1: value, param2: value, param3: value };

$.ajax
({
  type: "POST",
  contentType: "application/json; charset=utf-8",
  url: getAbsolutePath() + "Controller/MethodName",
  dataType: "json",
  data: JSON.stringify(datum),
  success: function (response) 
  {
    var result = response;
  }
});

有时响应需要太多时间。我正在寻找杀死或取消此请求的方法。我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:3)

jquery .ajax返回规范化的XMLHttpRequest,只需使用其中止方法:

var xhr = $.ajax(params);
xhr.abort();

答案 1 :(得分:3)

我的建议,使用超时属性:

$.ajax
({
   type: "POST",
   contentType: "application/json; charset=utf-8",
   url: getAbsolutePath() + "Controller/MethodName",
   timeout: 100000,   //cancels automatically after 100 seconds
   dataType: "json",
   data: JSON.stringify(datum),
   success: function (response) 
   {
     var result = response;
   }
 });

答案 2 :(得分:2)

您可以使用.abort()取消请求:

var xhr = $.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: getAbsolutePath() + "Controller/MethodName",
    dataType: "json",
    data: JSON.stringify(datum),
    success: function (response) {
        var result = response;
    }
});

xhr.abort();

https://api.jquery.com/jQuery.ajax/

答案 3 :(得分:1)

如果需要花费太多时间,您可以使用timeout ajax属性取消请求

参考http://api.jquery.com/jQuery.ajax/