2

我正在使用 Jquery 表单插件提交登录表单数据。这很好用,但是我在将成功登录的用户从我的 PHP 脚本中的登录页面重定向到客户端面板时遇到问题,即每当用户成功登录时,我都会使用 header("location:panel.php") 重定向我的 php 脚本,该页面作为响应被发送回登录页面,它将嵌入登录页面而不是显示为整个页面。

jQuery代码;

$(document).ready(function(){
    $("#loginform").ajaxForm({
        target: '#responselogin'
    }).submit();
});

php代码;

<?php
$username=$_POST['username'];
$password=$_POST['password'];
if($username=="tarhe" && $password=="oweh") {
    header("location:panel.php");
} else {
    echo"login failed";
}
?>

请问我需要帮助,在此先感谢

4

3 回答 3

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();
    });
于 2013-08-12T07:48:17.460 回答
0

我认为您不能将 http 标头中的位置标志与 ajax 一起使用。想一想:您使用 ajax 提交了一个表单,因此您将返回 Javascript 中的响应,而不是浏览器。

将成功处理程序绑定到.submit()表单,并设置window.location.href=http://your-url.com

于 2013-08-12T07:48:25.223 回答
0

您正在使用 ajax,因此做出响应数据并在成功时重定向用户。

 window.location.href = "somewhere.html";
于 2013-08-12T07:51:17.753 回答