JSON / JQUERY / JS - 从对象访问属性

时间:2017-04-26 23:45:38

标签: javascript jquery arrays json javascript-objects

从我的PHP处理文件中我收到了一个object[object Object]),我希望通过data[0].errors之类的调用来访问它的内容,但所有尝试似乎都失败了我

我怎么能实现这个目标?

这是对象的样子:

" Array
(
    [success] => 
    [errors] => Array
        (
            [companyname] => Company name is required and must have 50 characters at most.
            [logo1] => Logo is required.
            [investment] => First investment amount is required.
            [investment1] => Investment value must be an integer.
            [payment] => Basic wage is required.
            [payment1] => Payment value must be an integer.
            [companytype] => Company type is required.
            [companytype2] => Something is wrong with your company type.
        )

)
"

我必须在控制台div中显示那些errors,以向用户显示他做错了什么。

修改

这正是我console.log(data)时得到的: consolelog

这也是我的AJAX请求,要求一切都清楚。

        $.ajax({
                type        : 'POST',
                url         : 'processcreatecompany.php',
                data        : formData,
                dataType    : 'json',
               contentType: false,
               processData: false,
                encode      : true
            }).done(function(data) {

                console.log(data);
            }).fail(function(data) {

                console.log(data);

        })

1 个答案:

答案 0 :(得分:3)

正如预期的那样,问题出在php部分......你正在做print_r个对象,这些对象给出了输出它不是json

你应该使用json_encode来返回$data对象/数组,而不是

print_r($data['success']);
print_r($data['errors']);

你应该(也应该添加内容类型标题)

header('Content-Type: application/json');
echo json_encode($data);

稍后编辑没有标题,您通常会在text/plain中获得data.responseText的响应,如截图所示,并且您将不得不进行JSON解析和#34;手工&#34;。添加标头使jQuery自动进行解析,并且您将响应作为data.response<something I dont recall now>中的对象