var dataString = $("#acc_form").serialize();
var action = $("#acc_form").attr('action');
$.ajax({
type: "POST",
dataType:"JSON",
url: action,
data: dataString,
success: function(res){
if(res.status === 'error'){
console.log('Error!!!');
} else{
console.log('Success!!!');
}
}
});
这是我检查的地方,也是我感到困惑的地方。我的其他陈述看起来不对。
$desired_email = strip_tags(@$_POST['email']);
$email_exist_check = mysqli_query($connect, "SELECT * FROM accounts WHERE email='$desired_email'") or die(mysql_error());
$email_exist = mysqli_num_rows($email_exist_check);
if ($email_exist == 0) {
//performs insert query
} else {
header('Content-type: application/json');
$res['status'] = 'error';
echo json_encode($res);
}
非常感谢任何帮助。我是jQuery和ajax的新手并使用json
答案 0 :(得分:0)
因为您已经返回了json数组,所以即使检查电子邮件也是无效的。您需要在ajax函数中成功处理响应数据。错误回调仅在服务器在标头上返回状态代码时才起作用(它不是响应数据中的状态),我称之为解决方案1 。在解决方案2 中,我通过返回PHP代码中的标头来解决它。
解决方案1:在客户端(javascript)上解决它
//...
success: function(res){
// Use json parse method to parse the response data if it is string.
// If you have been to set dataType: 'json', it's ok. Can ignore this comment & code.
// res = JSON.parse(res);
status = res.status;
if(status == 'error'){
//Process the error in here
}
}
//...
完整的ajax功能示例:
$.ajax({
url: 'index.php',
data: {email: 'vuong@gmail.com'},
method: 'POST',
dataType: 'json',
success: function(res){
if(res.status === 'error'){
console.log('Error!!!');
} else{
console.log('Success!!!');
}
}
});
这是我工作场所的工作!
解决方案2:在服务器(php)上解决它
// Add it to before `echo` line
header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
您只需要在两者中选择一次。祝你好运!
很抱歉,因为我的英语不好。