我正在使用 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";
}
?>
我需要帮助,提前致谢
最佳答案
您使用ajax,因此您的301位置 header 不会对整个浏览器窗口产生影响。您必须将结构化数据返回到您的 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();
});
关于php - Jquery 表单插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18181777/