如何从ajax中的Controller获取json对象

时间:2014-01-29 15:04:55

标签: jquery ajax json

我正在使用jquery ajax和php编写邮件验证控制器。

我在php控制器中验证消息后,我试图通过ajax获取它并通过jquery在屏幕上打印。

我的ajax代码看起来像那样

...

success: function(data) {
     var jsonObj = jQuery.parseJSON(data);
        if (jsonObj.result) {
                //succes message

        }
        else {
            $.each([jsonObj.errors],function(key,value){
                console.log(jsonObj.errors);
            });

        }
    }

console.log错误显示:

[Object]
0: Object
email: "Email validation error message"
name: "Name validation error message"
phone: "phone validation error message"
__proto__: Object
length: 1

.......

如何获取电子邮件的价值以在屏幕上打印? 我想做的事情如下: 如果电子邮件错误不为空,则显示错误消息。

2 个答案:

答案 0 :(得分:1)

您应该将代码更改为:

success: function(data) {
     var jsonObj = jQuery.parseJSON(data);
    if (jsonObj.result) {
            //succes message

    }
    else {
        $.each([jsonObj.errors],function(key,value){
            if (typeof jsonObj.errors[0].email !== 'undefined') {
                console.log(jsonObj.errors[0].email);
            }
        });

    }
}

答案 1 :(得分:0)

假设您在控制器中有一个数组:

  Array
    (
        [message] => json object from controller
        [data] => Array
            (
                [name] => user25354i
                [profile_views] => 234
            )

    )
$array = array('message'=>"json object from controller",
               'data'=>array('name'=>'user25354i','profile_views'=>'234'));

将$ array返回为:echo json_encode($array);exit;

现在在jQuery中,默认情况下它将被视为json对象,因此您只需访问此数组,如下所示:

success: function(response) {
     alert(response.message);
     alert(response.data.name);
     so on...
    }

希望它会回答你的问题!