我发送一个ajax请求到一个php登录后台,可以改变用户和密码,启动会话并发送正面或负面响应。通过ajax请求登录只能在第二次尝试,第一次失败
响应然后通过jquery的翻译成用户消息,并且如果credentioals是正确的,则用户经由
window.location.href('mySecretSite.php')
问题是重定向到现场的封闭部分,即我总是在浏览器会话的第一次尝试中抛出回登录站点,因为下一个php脚本没有会话并且假定用户没有登录。
我发送一个ajax请求到一个php登录后台,可以改变用户和密码,启动会话并发送正面或负面响应。通过ajax请求登录只能在第二次尝试,第一次失败
响应然后通过jquery的翻译成用户消息,并且如果credentioals是正确的,则用户经由
window.location.href('mySecretSite.php')
问题是重定向到现场的封闭部分,即我总是在浏览器会话的第一次尝试中抛出回登录站点,因为下一个php脚本没有会话并且假定用户没有登录。
经过很多头痛之后,我解决了它。 错误和往常一样。所以我分享它让其他人有机会从我的愚蠢中学习。 后端的起始站点是一个index.html文件,导致浏览器不保存由ajax响应传递的会话cookie PHPSESSID。
将“secretsite”的起始页更改为index.php完全修复了该错误。
试试这个
$.ajax({
type: "POST",
url: reqUrl,
data: reqBody,
dataType: "json",
success: function(data, textStatus) {
if (data.redirect) {
// data.redirect contains the string URL to redirect to
window.location.href = data.redirect;
}
else {
// data.form contains the HTML for the replacement form
$("#myform").replaceWith(data.form);
}
}
});
我这样做。但这不是问题。解决方案是,您没有基于ajax登录系统的会话的html入口页面,因为浏览器不会吃html页面中的ajax响应发送给它的phpsessid cookie。我很傻。 – Max