[英]jQuery ajax JSON custom error handling
我想使用登录系统jQuery ajax和json。 我对成功功能没有任何问题。 我不知道如何通过“错误登录”等自定义错误。
这是我的代码,请帮帮我。
<script>
$(document).ready(function(){
$("#login").click(function(){
if($("#defaultEmail").val() == ""){
$("#defaultEmail").addClass("field-err");
$("#defaultEmail").focus();
}else if($("#defaultPassword").val() == ""){
$("#defaultEmail").removeClass("field-err");
$("#defaultPassword").addClass("field-err");
$("#defaultPassword").focus();
}else{
$("#defaultPassword").removeClass("field-err");
$('#loading').css('display', 'block');
var email = $('#defaultEmail').val();
var password = $('#defaultPassword').val();
var queryString = "email=" + email + "&password=" + password + "";
$.ajax({
url: 'secureLogin.php',
contentType: "application/json; charset=utf-8",
dataType:'json',
async: false,
type:'GET',
data: queryString,
success: function(data){
$('#loading').css('display', 'none');
var url = "c_profile.php";
$(location).attr('href',url);
},
error: function(request,error){
$('#loading').css('display', 'block');
$("#log-ajax-error").append("ERROR: " + error);
}
});
}
});
});
</script>
这是我的sucureLogin.php代码
$email = $_GET['email'];
$password = $_GET['password'];
$encrypted_pass = md5($password);
$sel = @mysql_query("SELECT `name`, `company`, `cid` FROM `company` WHERE `email` = '$email' AND `password` = '$encrypted_pass'");
$count = @mysql_num_rows($sel);
if($count > 0){
while($data = @mysql_fetch_array($sel)){
// Success here
}
}else{
$arr = array('a' => 'Unable to login');
echo json_encode($arr);
}
我正在为错误抛出json_encode。 请帮我解决一下这个。 提前致谢。
在服务器端
$arr = array('error' => 'Unable to login');
echo json_encode($arr);
在客户端
success: function(data){
$('#loading').hide();
if( 'error' in data ){
$("#log-ajax-error").append("ERROR: " + data.error);
}
else{
var url = "c_profile.php";
$(location).attr('href',url);
}
},
如果ajax请求出错,将调用错误回调,因此您的代码需要位于成功处理程序中。
在ajax中,错误处理程序不构成您抛出的错误,它构成连接错误或请求的错误。 这意味着,无论您如何发回类似于您的错误响应,它都会触及成功回调。
在您的成功中,您应该对响应进行一些检查:
success: function(data){ if(data.status === false) { // There was an error } else { $('#loading').css('display', 'none'); var url = "c_profile.php"; $(location).attr('href',url); } },
在PHP处理程序中添加状态键:
$arr = array( 'status' => true (or false), 'a' => 'Unable to login' );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.