Jquery表单插件

时间:2013-08-12 07:42:49

标签: php jquery html ajax

我正在使用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";
}
?>

我需要帮助,提前谢谢

3 个答案:

答案 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";