【问题标题】:JSON/JQUERY/JS - Access properties from objectJSON/JQUERY/JS - 从对象访问属性
【发布时间】:2017-09-24 13:45:32
【问题描述】:

从我的 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) 时,这正是我得到的:

这也是我的 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);

        })

【问题讨论】:

  • 收到的数据是字符串吗?正是那个字符串?
  • 我收到的实际上是[object Object],感谢 Chrome 开发人员菜单,我实际上可以看到有数组,我截取它并显示给你看,让它更清晰。在第二个@ibrahimmahrir 中编辑问题
  • 看来问题出在PHP部分,你应该贴出代码
  • 您尝试了什么,遇到了什么错误?
  • 在您的 PHP 中,您应该对您的 $data['errors'] 数组进行 json 编码并将其返回给您的 javascript。然后,在您的 AJAX 调用的成功回调中,您可以将 json 字符串响应解析为一个对象,并以您期望的方式访问

标签: javascript jquery arrays json javascript-objects


【解决方案1】:

正如预期的那样,问题出在 php 部分...您正在对对象执行 print_r,它给出的输出不是 json

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

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

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

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

稍后编辑:如果没有标题,您通常会在data.responseText 中得到text/plain 的响应,如屏幕截图所示,并且您必须“手动”进行 JSON 解析。添加标头使 jQuery 自动进行解析,您将在 data.response<something I dont recall now> 中将响应作为对象获得

【讨论】:

  • 哇,我不敢相信我犯了这么愚蠢的错误...... :) 由于我的知识非常有限,我仍然无法做到 - 感谢@LohmarASHAR 的贡献和帮助!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多