Javascript 捕获状态如何使post请求失败?

Javascript 捕获状态如何使post请求失败?,javascript,jquery,request,Javascript,Jquery,Request,我有代码,这个脚本在循环中发送请求: function parse() { $.post("meth.php", { proxy: $proxy, time: (new Date().getTime()) }, function(data) { return setTimeout(function() {parse()}, 5000); }, "json"); } 但有时服务器发送状态出错,我需要忽略此错误并发送新请求 我

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

function parse() {
    $.post("meth.php", {
        proxy: $proxy,
        time: (new Date().getTime())
    }, function(data) {
        return setTimeout(function() {parse()}, 5000);
    }, "json");
}
但有时服务器发送状态出错,我需要忽略此错误并发送新请求

我尝试:

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);
    } 
}

但是这个构造不起作用,请帮助

你没有起作用,因为它不会在Ajax请求失败时抛出错误。通过查看jqueryforajax中的文档可以看到这一点。您将根据您的操作方式对事件使用失败或错误

或者,你也可以用一个承诺来激励成功和失败

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

您所做的不起作用,因为它不会在Ajax请求失败时抛出错误。通过查看jqueryforajax中的文档可以看到这一点。您将根据您的操作方式对事件使用失败或错误

或者,你也可以用一个承诺来激励成功和失败

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

使用
$.ajax
而不是
$.post
您可以使用具有属性
error
的$.ajax来处理与jqxhr相关的错误,状态为i尝试使用带有错误的ajax,但创建了重复项,并并行启动工作2或3函数post()使用
$.ajax
而不是
$.post
您可以使用具有属性
error
的$.ajax来处理与jqxhr相关的错误,状态为i尝试使用带有错误的ajax,但创建了重复项,并并行启动工作2或3函数post()