繁体   English   中英

jQuery ajax JSON自定义错误处理

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM