AJAX调用302后更新URL地址

时间:2017-01-20 10:30:26

标签: jquery ajax

在使用jQuery执行AJAX请求后,我想使用以下代码更新URL

history.pushState(object, title, new_url)

所以我写了下面的代码

$.ajax({
    url: url,
    success: onSuccess
})

var onSuccess = function() {
    ...
    history.pushState(object, title, new_url)
}

问题是,我去的URL进行AJAX调用会返回302代码,所以我需要一种方法来找出最终的URL在哪里。

有没有办法找到这些信息?

1 个答案:

答案 0 :(得分:2)

你能看出这是否适合你的情况..

$.ajax({
    url: url,
    success: function(data, textStatus, xhr),
})

var onSuccess = function(data, xhr, textStatus) {
    ...
    if( xhr.status == 200 ) history.pushState(object, title, new_url)
}

编辑:

我已经使用我的实时网站测试了我的console.log'ed最终目标网址:

(function($){

var xhr;
var _orgAjax = jQuery.ajaxSettings.xhr;
jQuery.ajaxSettings.xhr = function () {
  xhr = _orgAjax();
  return xhr;
};


$.ajax({
    url: "https://vizkultura.hr/dizajn",
    success: function(data) {
        console.log( xhr.responseURL );
    },
});

})(jQuery)

输出新网址:https://vizkultura.hr/dizajn-07-12/

尝试@your结束,看看它是否合适, 干杯,k