【发布时间】:2018-11-07 23:47:51
【问题描述】:
我有一个按钮button1,一旦点击它就会重定向到一个网址www.first.com。此 url 在其响应 www.second.com 中包含另一个 url。我使用 ajax 调用拦截请求,而不是重定向到 www.first.com,而是重定向到 www.second.com。以下代码运行良好,并且符合我的预期:
document.getElementById("button1").addEventListener("click", function (e) {
e.preventDefault();
$.ajax({
url: 'http://www.first.com',
method: 'GET',
crossDomain : true,
success: function(response){
//here I am redirected to www.second.com
window.location.href = response;
}
});
});
我想做另一个 ajax 请求 - 页面 www.second.com 自动重定向到 www.third.com。我不想对 url 进行一些简单的字符串操作(假设我想将其更改为 www.third2.com),然后直接重定向到 www.third2.com。我怎么做?我想我需要另一个 ajax 调用,但我不知道如何在完成第一个调用后使其按顺序运行。
张贴我到目前为止尝试过的和没用的:
success: function(response){
$.ajax({
url: response,
method: 'GET',
crossDomain : true,
xhrFields: {
withCredentials: false
},
success: function(result2){
//it does not redirect to `google.com`; it still redirects to `www.second.com`
result2 = "https://www.google.com/";
window.location.href = result2;
alert("This alert does not show");
}
});
//maybe I have to remove this line?
window.location.href = response;
},
【问题讨论】:
-
url: 'http://www.first.com,中缺少逗号 -
如果“页面
www.second.com自动被重定向到www.third.com”那么你就没有问题了,因为浏览器会处理301/302回应 -
听起来像一个 XY 问题,您“获取” second.com,而不是返回页面,而是返回一些文本以转到 third.com - 当它应该返回时直接使用新网址的 301/302。
-
@freedomn-m 我试图将另一个 ajax 函数放入我的
success函数中,但没有成功 -
你怎么知道它是否是重定向?它会永远是第一/第二->第三吗?如果第二个 不是 重定向,或者第三个也是重定向怎么办?这就是在服务器上设置正确响应的目的,
$.ajax将处理它。不要试图重新发明轮子。
标签: javascript jquery ajax promise