CodeIgniter - Jquery Ajax - 从Ajax调用收到的Parse Json

时间:2017-10-21 00:04:10

标签: jquery json ajax codeigniter

我在成功函数(ajax)中解析json时遇到问题。  我现在正在开始正确地学习json,但我根本无法让它工作。

我有这个jquery函数来提交数据:

$("#loginForm").on('submit', function(form)
{   
    form.preventDefault();
    var tdata= $("#loginForm").serializeArray();
    var that = $(this),
    data = tdata;

    $.ajax({
        url: that.attr('action'),
        type: 'POST',
        data: data,

        success: function(data){

            alert(data["error"]["email"]);
        },
        error: function(){
            alert(data["error"]["email"]);
        }
    });

 });

在控制器中我有这个:

$this->load->library('form_validation');
        $this->form_validation->set_rules('email', 'Email', 'required|valid_email|trim|xss_clean');
        $this->form_validation->set_rules('password', 'Password', 'required');
 .....
$arrReturnData['error'] = $this->form_validation->error_array();
 echo json_encode($arrReturnData);

在我跟踪请求的firefox中,收到的字符串是:

{"error":{"email":"The Email field is required.","password":"The Password field is required."}}

但是我无法解析它:(我不知道怎么做,而且我在这部分上花了3个多小时。一切正常,我无法解析这个。

我试过了:

data.error["email"]

data[0]["email"]

但它无法收到电子邮件错误消息。请帮助:)

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我无法使用数据变量。 我做了什么,修改了错误函数(jquery ajax),如下所示:

error: function(request, status, error){
                var json=request.responseText;
                obj = JSON && JSON.parse(json) || $.parseJSON(json);
                alert(obj.error.email);

            }

所以我使用request.responseText的JSON.parse。 现在我可以成功使用obj.error.email