gpt4 book ai didi

javascript - jQuery.post() 并通过 ajax 重定向

转载 作者:行者123 更新时间:2023-11-28 10:59:27 25 4
gpt4 key购买 nike

我使用jQuery.post()向服务器发送数据,当服务器将数据发送回客户端时,会调用post()回调。我知道服务器可能会使用重定向 header 字段(“Location”)进行响应。

目前,没有发生重定向。可能是什么原因?是否有可能在重定向发生之前运行脚本?

更新:附上一段截取的代码。我知道服务器接受POST方法,并且服务器响应POST。不知何故,error() 总是被调用(看起来甚至在客户端\浏览器接受响应之前就发生了)。

出了什么问题?

$(document).ready(function() {  
$("#loginForm").submit(function() {
$.ajax({
type : "POST",
data : $("#loginForm :input").not("#loginBtn").serialize(),
url : "http://localhost/auth",
success : function(data, textStatus, jqXHR) {
alert("success");
alert(jqXHR.getResponseHeader("Location"));
},
error : function(jqXHR, textStatus, errorThrown) {
alert("error");
}
});
});
});

最佳答案

jquery.post() 通过发出 Ajax 请求来工作。在 Ajax 调用中,PHP 脚本异步工作(将其视为后台线程)。因此,PHP 脚本无法重定向客户端的浏览器。解决方法是让 PHP 脚本响应要重定向到的 URL,并使用 javascript 进行重定向。

在您的 POST 回调中:

function(data){  //data will be the URL to redirect to, sent back by the PHP script
window.location = data;
}

编辑

摘自 jquery.ajax() 上的 Jquery 文档

statusCode(1.5添加) map

Default: {}

数字 HTTP 代码和响应具有相应代码时调用的函数的映射。例如,当响应状态为 404 时,将发出以下警报:

$.ajax({
statusCode: {
404: function() {
alert('page not found');
}
}
});

如果请求成功,状态码函数采用与成功回调相同的参数;如果导致错误,它们将采用与错误回调相同的参数。

关于javascript - jQuery.post() 并通过 ajax 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9001666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com