php - jQuery ajax JSON 自定义错误处理

标签 php jquery ajax json

我想使用登录系统 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 请求出现错误,将调用错误回调,因此您的代码需要位于成功处理程序中。

关于php - jQuery ajax JSON 自定义错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12674298/

相关文章:

php - jQuery $(this).serialize() 不发送未更改的输入

php - 删除名称中仅包含数字的表 - Codeigniter

javascript - 以某种方式在 iOS Safari 上暂停或 sleep javascript

javascript - 无法修改返回的 AJAX 变量

JavaScript 和 AJAX 调用

PHP PDO。查询正确时的错误号 '00000'

php - 显示数据库中存储的 url 中的照片

javascript - 为什么 jQuery 数据不能与追加一起使用?

javascript - 链接系列的深入分析

javascript - 如何使用 datajs 进行同步 OData 请求?