首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >中止后xhr ajax重启

中止后xhr ajax重启
EN

Stack Overflow用户
提问于 2015-07-24 01:44:56
回答 2查看 1.2K关注 0票数 0

我有一个http长轮询,如下所示:

代码语言:javascript
运行
复制
   xhr = $.ajax({
                    type: "GET",
        url: "http://localhost/pubsub.php",
        ...

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

完成此操作后,如何重新启动长轮询请求?有没有重启的方法?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-07-24 02:10:39

目前还没有用于重启AJAX的API,但是您可以通过在error回调函数中再次调用AJAX来模拟AJAX的重启。

代码语言:javascript
运行
复制
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()
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

票数 0
EN

Stack Overflow用户

发布于 2015-07-24 02:23:46

这是我在我的项目中所做的,

如果我在ajax响应中看到很长的延迟,我只需中止前面的ajax请求,并使用如下所示的相同方法发出一个新请求,

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

代码语言:javascript
运行
复制
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
                    }
                }
            });
}

我希望上面的几行代码能给你一些启发。

此外,在错误回调中,选中以捕获中止并单独处理它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31594577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档