[英]AJAX Success or error not firing
我似乎無法弄清楚為什么它不起作用或找不到相關文章。 我可以從發布請求中看到firebug中的json對象返回成功:false或成功:true,所以我不知道為什么函數不會觸發。
阿賈克斯
$("#login").submit(function (e) {
e.preventDefault();
$.ajax({
url: "../process/login-process.php",
type: "POST",
contentType: "application/json; charset=utf-8",
data: { 'username': $('[name=username]').val(), 'password': $('[name=password]').val() },
beforeSend : function (){
//$("#login").hide();
},
success: function(data){
window.localation=data.redirect;
},
error: function(data) {
$(".error").html('');
alert('wtf');
if(data.empty) {
$(".error").html(data.empty);
}
if(data.incorrect) {
$(".error").html(data.incorrect);
}
}
});
});
PHP
<?php
session_start();
include "../inc/connect.php";
$username = mysqli_real_escape_string($con, $_POST['username']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$password = hash('sha256', $password);
$sql = "SELECT * FROM admin WHERE username ='$username' AND password ='$password'";
$result = mysqli_query($con, $sql) or die(mysqli_error($con));
$row = mysqli_fetch_array($result);
$count=mysqli_num_rows($result);
if ($username == "" || $password == "") {
$data['empty'] = 'All fields are required.';
} else if(($count==1) && ($username)) {
$_SESSION['user'] = $row['firstName'];
$_SESSION['userID'] = $row['adminID'];
$data['success'] = true;
$data['redirect'] = '../pages/dashboard.php';
} else {
$data['success'] = false;
$data['incorrect'] = "Incorrect Username or Password.";
}
echo json_encode($data);
?>
您需要在代碼中糾正兩件事,
success
回調中將window.localation
更改為window.location
dataType: 'JSON'
或在成功回調中使用$.parseJSON
因此,您的成功回調應為:
success: function(data){
data = $.parseJSON(data); // <- Don't use this if you add dataType: 'JSON' in ajax
window.location=data.redirect; //<- Spelling corrected for location
}
您正在發送未提及任何標頭的字符串(在本例中為json)。 所以永遠是200 OK。
因此,錯誤永遠不會觸發。
success: function(data){
window.localation=data.redirect; <----- error here. location
},
這就是為什么什么都沒有發生的原因。
在數據不正確的情況下觸發錯誤
代替:
} else {
$data['success'] = false;
$data['incorrect'] = "Incorrect Username or Password.";
}
采用
} else {
header('HTTP/1.0 403 Forbidden');
echo 'Incorrect Username or Password.';
exit;
}
這會給您一條403禁止消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.