ajax调用后重定向并跳过.始终



我有一个来自jquery的标准ajax调用,如下所示。

我想检查返回的json数组是否正在请求一个新页面,如果是,请转到那里,不要执行.allways回调。

有简单的方法吗?

var jqxhr = $.ajax({
    url: server_URL + '/index.php',
    type: 'post',
    dataType: "json",
    data: obj
}).done(function (data) {
    if (data['go_location']) {
        window.location.href = data['go_location'];
    } else {
        //other stuff
    }
}).fail(function () {
    alert("ajax error");
}).always(function () {
    //other code
});

正如名称所说,'always',无论成功还是失败,都执行.always()。您不想在成功状态下执行.always(),但在失败状态下执行,这是不可能的。您在ajax响应上调用了三个方法,即.done().fail().always()。ajax完成后,所有方法都会立即触发[.done().alway()功,否则.fail().always()]。我们知道jquery/js是异步的,所以,即使是任何其他方法中的return语句也不能停止.always()的执行。在您的情况下,唯一的选项是不要使用.Alvays(方法。无论状态是成功还是失败,都会执行.done().fail()因此,如果需要,可以将.always()方法语句移动到这些方法中。

    $.ajax({
        url: server_URL + '/index.php',
        type: 'post',
        dataType: "json",
        data: obj
    }).done(function (data) {
        //Do something if ajax succeeds
        if (data['go_location']) {
            window.location.href = data['go_location'];
        } else {
            //other stuff
        }
    }).fail(function () {
        //Do something if ajax fails
    })

我真的不明白为什么你有.always函数,但我认为你可以试试这个:

$.ajax({
  url: server_URL + '/index.php',
  type: 'post',
  dataType: "json",
  data: obj,
  success: function(data) {
    if (data['go_location']) {
      window.location.href = data['go_location'];
    } else {
      //other stuff
    }
  },
  error: function(data) {
    alert("ajax error");
  }
}

相关内容

  • 没有找到相关文章

最新更新