douhuang1852 2014-06-25 18:16
浏览 327
已采纳

为什么这些对象属性未定义?

I'm trying to access the properties of an object returned from my php script using json_encode like so:

php

echo json_encode(array(
  'person_id' => $personID,
  'job_id' => $jobID)
);

JS

$.ajax({
  url: url,
  cache: false,
  type: "POST"
}).done(function(sData){
  console.log(sData);
  console.log(sData.job_id);
  console.log(sData.person_id);
});

Output:

{"person_id":1,"job_id":1}
undefined
undefined

What's going on here? Why can't I access these properties?

UPDATE:

For any future visitors, this is a mistake I've made MANY, MANY times before (leaving out dataType) and will most certainly make again.

It can be especially confusing because when you examine your server response in Chrome Dev Tools, it is automatically parsed as a JSON object (in the PREVIEW tab).

enter image description here

It's nice that Chrome does this, so that you can easily inspect your response data, however the same is not true for your javascript code, you WILL NEED to declare the proper dataType of the response so that your code can interpret the data as an object and not a string.

  • 写回答

3条回答 默认 最新

  • douyuefu1372 2014-06-25 18:19
    关注

    $.ajax doesn't evaluate the response as JSON by default. you have to pass dataType: 'json'

    This should do it

    $.ajax({
        url: url,
        cache: false,
        type: "POST",
        dataType: 'json'
    }).done(function(sData){
            console.log(sData);
            console.log(sData.job_id);
            console.log(sData.person_id);
    });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 多尺度特征图提取和融合
  • ¥15 微信小程序:渲染收货地址时页面不显示
  • ¥20 win7 64位DirectShow提示初始化失败如何解决?
  • ¥20 小规模孤立词识别系统设计
  • ¥15 关于Java对接海康威视车牌识别一体机SDK是否需要固定外网的IP?
  • ¥15 Linux扩容时,格式化卡住了:vgdispaly查看卷组信息,没有输出
  • ¥18 关于#ubuntu#的问题:使用背景-工作职责内有七八台ubuntu系统的电脑,平时需要互相调取资料,想实现把这几台电脑用交换机组成一个局域网,来实现指定文件夹的互相调取和写入
  • ¥20 求一个简易射频信号综测仪
  • ¥15 esp8266 tally灯 接收端改为发射端
  • ¥30 Labview代码调用access 数据库,相同代码其中一个调用不出来是为什么