【问题标题】:xhr ajax restart after abort中止后xhr ajax重启
【发布时间】:2015-10-14 04:25:51
【问题描述】:

我有一个像这样完成的 http 长轮询:

   xhr = $.ajax({
                    type: "GET",
        url: "http://localhost/pubsub.php",
        ...

Ajax 返回一个 xhr 对象。我在另一个函数中使用它通过执行 xhr.abort(); 来中止长轮询请求;

我这样做后,如何重新启动长轮询请求?有重启的方法吗?

谢谢

【问题讨论】:

  • 你可以把这个ajax放在一个函数里再调用一次
  • "有重启的方法吗?" 没有,像任何其他请求一样发送另一个。

标签: javascript jquery ajax


【解决方案1】:

这是我在项目中所做的,

如果我看到 ajax 响应有很长的延迟,我只需中止之前的 ajax 请求并以如下所示的相同方法发出新请求,

注意:我不会在任何循环中调用 GetData() 方法,而是来自应用程序用户的按钮单击操作(比如刷新)。

function GetData()
{
            if (getDataAjaxCall && getDataAjaxCall.readyState != 4)
                getDataAjaxCall.abort();

               var searchRequest = {};
               searchRequest.Criteria = []; //set some criteria    

    getDataAjaxCall = $.ajax({
                url: 'api/DataController/GetData',
                type: 'POST',
                dataType: 'json',
                data: searchRequest,
                success: function (data, textStatus, xhr) {
                   //do tasks you want on success
                },
                error: function (xhr, textStatus, errorThrown) {
                    $.unblockUI();
                    if (textStatus != 'abort') {
                        //display error message on actual error
                    }
                }
            });
}

希望以上几行代码能给你一些想法。

另外,在错误回调中,放置一个检查以捕获中止并单独处理它。

【讨论】:

  • 不要盲目编辑答案,你在cmets中说没有结果显示,你知道console.log()函数吗。
【解决方案2】:

没有API可以重启AJAX,但是你可以在error回调函数中再次调用AJAX来模拟AJAX的重启。

var xhr;

function callAJAX() {
    xhr = $.ajax({
        url: "http://stackoverflow.com/dummyURL",
        error: function (xhr, e) {
            console.log("Error Occured " + e);
            callAJAX(); // Restart the AJAX call
        }
    })
}

callAJAX();


xhr.abort()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

【讨论】:

    猜你喜欢
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    相关资源
    最近更新 更多