1

下面是我的 AJAX 方法,它能够连接到服务器:

$.ajax({
            类型:'POST',
            网址:$form.attr('action'),
            数据:表格数据,
            数据类型:'json',
            成功:函数(数据){
                控制台.log(data.id);
           },
            错误:函数(消息){
                console.log(message.code);
           }
       });

下面是我为 cakephp UsersController 类创建的响应请求的方法:

公共功能登录(){
        if ($this->request->is('post')) {
            if ($this->Auth->login()) {
                return new CakeResponse(array('body'=> json_encode(
                                        $this->Auth->user()),'status'=>200));

            } 别的 {
                $reply["code"] = "用户名无效或
                                  密码,请再试一次";
                返回新的 CakeResponse
                (array('body'=> json_encode($reply),'status'=>500));
            }
        }
    }

问题是,当服务器发送错误时,我无法读取 json 响应。下面截断的console.log 应该写“无效的用户名或密码,请重试”,但它显示未定义。

错误:函数(消息){
                console.log(message.code);
           }

但是,我能够阅读以下内容:

成功:函数(数据){
                控制台.log(data.id);
           }
4

2 回答 2

3

此处描述了jQueryerror回调的参数:

所以第一个参数是jqXHR对象,在这里描述:

所以我想你可以阅读它的responseText属性。

error: function(jqXHR, textStatus, errorThrown) {
    var message = JSON.parse(jqXHR.responseText);
    console.log(message.code);
}
于 2013-05-29T12:04:14.340 回答
1

在您的以下代码中:

error: function(message){
      console.log(message.code);
}

您将收到服务器发送的错误,而不是您尝试从代码中获取的错误。从服务器端读取错误。使用以下代码:

error: function(message,err,xtr){
      console.log(JSON.stringify(message)+" "+err+ " " +xtr);
}
于 2013-05-29T11:51:19.570 回答