我有一个登录脚本(尚未加密,全部)发布到PHP脚本,然后该脚本返回结果,证明凭据正确,错误或用户需要填写1或这两个字段都是空的。
在此之后我想根据结果重定向到一个页面(如果凭据是正确的)。但当然,当它出错或者一个或两个字段都是空的时,当然不是。
如何在ajax中检查?
这就是我现在在PHP脚本中的内容:
$conn = new Connection;
$username = $_POST['username'];
$userpassword = $_POST['userpassword'];
if(empty($username) && empty($userpassword)){
echo 'Vul een gebruikersnaam en wachtwoord in';
}else if(empty($username)){
echo 'Vul een gebruikersnaam in';
}else if(empty($userpassword)){
echo 'Vul een wachtwoord in';
}else{
//Both filled in, begin logincode:
$getuser = "SELECT * FROM users WHERE username = '".$conn->real_escape_string($username)."'";
$getusercon = $conn->query($getuser);
$getuser = $getusercon->fetch_assoc();
if($userpassword == $getuser['password']){
if($getuser['rights'] == '1'){
$_SESSION['user'] = 'admin';
$userdata = array(
'userdata' => $_SESSION['user'],
);
echo json_encode($userdata);
}else{
$_SESSION['user'] = 'user';
$userdata = array(
'userdata' => $_SESSION['user'],
);
echo json_encode($userdata);
}
}else{
echo 'Wachtwoord en gebruikersnaam komen niet overeen';
}
}
这是我的ajax:
// Login Ajax Code
$( "#content" ).on("submit", "#loginform", function( event ) {
// Stop normal form behaviour
event.preventDefault();
// Retrieve input fields and their values
var $form = $( this ),
$username = $form.find( "input[name='username']" ).val(),
$userpassword = $form.find( "input[name='userpassword']" ).val(),
url = $form.attr( "action" );
// Post above values to the action of the form
var posting = $.post( url, { username: $username, userpassword: $userpassword} );
// Show result in a div
posting.done(function( data ) {
$( "#loginresult" ).empty().slideDown('fast').append( data );
}, "json");
});
我添加了最后一个, "json"
部分,尝试将会话内容恢复,这种方式有效。
当我使用管理员帐户正确登录时,我在loginresult
框中看到此信息:{"userdata":"admin"}
如何解码我在ajax代码中使用的内容?问题是我只需要在它是json时解码它,而不是当它是显示一个或两个字段为空的正常消息时。也许所有回复都需要是json?
我如何在userdata
包含admin
时重定向到某个页面?
答案 0 :(得分:0)
所有响应必须具有相同的格式,在这种情况下为JSON。 因此,在Javascript中,您可以执行以下操作:
b