我正在使用Jquery表单插件来提交登录表单数据。这很好但我有问题从PHP脚本中的登录页面将成功登录用户重定向到客户端面板,也就是说,无论何时用户成功登录,我都使用标题(“location:panel.php”)重定向我的PHP脚本,这个页面作为响应发送回登录页面,它将嵌入登录页面,而不是显示为整个页面。
jquery代码;
$(document).ready(function(){
$("#loginform").ajaxForm({
target: '#responselogin'
}).submit();
});
php code;
<?php
$username=$_POST['username'];
$password=$_POST['password'];
if($username=="tarhe" && $password=="oweh") {
header("location:panel.php");
} else {
echo"login failed";
}
?>
我需要帮助,提前谢谢
答案 0 :(得分:3)
您使用的是ajax,因此您的301位置标头对整个浏览器窗口无效。你必须将结构化数据返回到你的javascript并改为使用javascript重定向。
$(document).ready(function(){
$("#loginform").ajaxForm({
success: function (data) {
if (data == "login failed") {
$("#responselogin").html("Login Failed");
} else {
window.location.href = "panel.php";
}
}
).submit();
});
如果你使用json响应它实际上更好。因为它的格式更适合浏览器使用。
使用json处理此问题,您可以执行以下操作。首先更改您的PHP代码以返回json响应
$success = 0;
if($username=="tarhe" && $password=="oweh") {
$success = 1;
}
echo json_encode(array('success' => $success));
然后在你的javascript代码中
$(document).ready(function(){
$("#loginform").ajaxForm({
type: 'json',
success: function (data) {
if (data.success == 0) {
$("#responselogin").html("Login Failed");
} else {
window.location.href = "panel.php";
}
}
).submit();
});
答案 1 :(得分:0)
我认为您不能使用带有ajax的http标头内的位置标志。想一想:你提交一个带有ajax的表单,所以你得到了Javascript中的响应,而不是浏览器。
将成功处理程序绑定到.submit()
表单,然后设置window.location.href=http://your-url.com
答案 2 :(得分:0)
您正在使用ajax,因此请创建响应数据,并在成功时重定向用户。
window.location.href = "somewhere.html";