请求后如何捕获状态?

时间:2017-10-30 18:23:02

标签: javascript jquery request

我有代码,这个脚本在循环中发送请求:

function parse() {
    $.post("meth.php", {
        proxy: $proxy,
        time: (new Date().getTime())
    }, function(data) {
        return setTimeout(function() {parse()}, 5000);
    }, "json");
}

但有时服务器发送状态为falied,我需要忽略此错误并发送新请求

我试试:

function parse() {
    try{
    $.post("meth.php", {
        proxy: $proxy,
        time: (new Date().getTime())
    }, function(data) {
        return setTimeout(function() {parse()}, 5000);
    }, "json");
    } catch (err) {
        return setTimeout(function() {parse()}, 5000);
    } 
}

但是这种结构没有用,请帮忙

1 个答案:

答案 0 :(得分:0)

您所做的不起作用,因为它在Ajax请求失败时不会抛出错误。你会看到jQuery for Ajax中的文档。您将根据您的操作使用失败或错误。

或者你可以使用一个总是会成功和失败的承诺。

var activeTimer;
function foo() {
    if (activeTimer) window.clearTimeout(activeTimer)
    $.ajax({
      method: "POST",
      url: "some.php",
      data: {  }
    }).always(function() {
      activeTimer = window.setTimeout(foo, 5000)
    });
}