为什么这个对象解析返回undefined?

Col*_*per 1 javascript php ajax json

对于第n个对象抓取版本感到抱歉,但我只是看不到它.

我正在从一个数据库返回一个JSON对象到我的Javascript,我在控制台中看到返回的对象(下面).但是,当我试图让孩子进入控制台的那一刻我得到了"undefined".我应该能够看到result.bills,或者result["bills"]只是为了确定我已经尝试过result[0].bills,等等都是未定义的.这看起来很基本,但我不明白为什么我不能做这个工作.

我的PHP(在db之后):

if ($result) { 
    $rows = array();
    while($r = mysqli_fetch_assoc($result)) {
        $rows[bills] = $r;
    }  
    echo json_encode($rows);
} else {
    echo "Unknown Error";   
}
//all done
Run Code Online (Sandbox Code Playgroud)

我的AJAX:

$.ajax({
    type: 'get',
    url: 'GetBills.php',
    success: function(result) {
        var thebills = result.bills;
        console.log(thebills);          
    },
    error: function(xhr, desc, err) {
        console.log(xhr);
        console.log("Details: " + desc + "\nError:" + err);
    }
});
Run Code Online (Sandbox Code Playgroud)

我回来了:

{
    "bills": {
        "ID": "3",
        "State": "MD",
        "Title": "Maryland Android Project Act (S.1196 H.2057)",
        "HouseNum": "H 2057",
        "SenateNum": "",
        "Session": "189th"
    }
}
Run Code Online (Sandbox Code Playgroud)

acu*_*joe 5

你得到的undefined是因为jQuery不知道它实际上正在接收JSON.如果您使用php文件发送JSON 标头,或者如果设置为'json' ,则会检测并自动解析.dataType

所以,目前你正在访问一个字符串:

var result = '{"bills":{"ID":"3","State":"MD","Title":"Maryland Android Project Act (S.1196 H.2057)","HouseNum":"H 2057","SenateNum":"","Session":"189th"}}'
Run Code Online (Sandbox Code Playgroud)

但是你试图访问STRING函数(具体bills是哪个undefined).

如果你选择不更改dataType或添加标题,你也可以做result = JSON.parse(result)同样的事情.

执行上述三个解决方案之一将为您提供您正在寻找的对象,并访问其子代:

//Javascript
result = JSON.parse(result);

//In Console
Object {bills: Object}
bills: 
   ObjectHouseNum: "H 2057"
   ID: "3"
   SenateNum: ""
   Session: "189th"
   State: "MD"
   Title: "Maryland Android Project Act (S.1196 H.2057)"
__proto__: Object
__proto__: Object
Run Code Online (Sandbox Code Playgroud)