如何从回调到 php 脚本访问 JSON 对象


How can I access JSON objects from my call back to php script?

在我的 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");
});

我正在使用代码点火器访问来自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;
}
}

当我控制台.log(数据)时,我得到:

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

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

 $('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对应部分中修复。