如何从我的回调到PHP脚本访问JSON对象?

时间:2012-07-03 01:28:05

标签: php jquery arrays json object

在我的scrip.js文件中,我正在使用jquery $ .post函数发布一些数据(实际上现在我只是尝试让我的回调工作,所以我可以读取一些数据)。

 $('document').ready(function(){

    $.post("index.php/main/showData", 
     function(data){
        console.log(data);
        for (var name in data){
            alert(name);
        }
     }, "json");
});

我正在使用codeigniter从mysql访问数据:

class Main extends CI_Controller
{
    function showData()
{
    $this->load->model('ajax');
    $array = array($this->ajax->getRecArray());

    // $this->index();
    echo json_encode($array);
}

我的模特

class Ajax extends CI_Model
{
    function getRecArray()
{
    $query = $this->db->query("SELECT * FROM record_table WHERE id = 1");
    $row = $query->result();
    return $row;
}
}

当我在console.log(数据)时,我得到:

[[Object { id="1", name="scott"}]]

我的问题是,如何使用script.js访问各个属性或对象? 例如,如何访问该Object数组中name的值?

1 个答案:

答案 0 :(得分:1)

 $('document').ready(function(){

    $.post("index.php/main/showData", 
     function(data){
        console.log(data);
        for (var name in data[0][0]){
            alert(data[0][0][name]);
        }
     }, "json");
});

应该这样做。

使用for .. in迭代对象时,指定的变量不包含数据,而是包含成员名称的字符串。在JS中,您可以通过语法data.member或data [“member”]访问对象成员,并且在这种情况下您将需要使用后者,因为您有字符串。

此外,在这种特定情况下,数据是数组内部的一个对象,这是一个数组,这里是按级别细分的返回数据:

[
    [
        Object { 
            id="1", 
            name="scott"
        }
    ]
]

因此你需要语法数据[0] [0] [name];这应该很容易在PHP计数器部分修复。