将多维JSON数组传递给jQuery函数

时间:2011-10-18 02:24:45

标签: php javascript jquery ajax json

我有一个PHP数组,我想传递给调用它的jQuery函数。但是,当我尝试以下面的方式检索'lat'的值时,我得到错误Cannot read property 'lat' of null,显然是因为我不知道如何访问多维JSON数组。谁能告诉我怎么样?

PHP数组

Array
(
[0] => Array
    (
        [price] => 1600
        [bedroom] => 1
        [lat] => -71.119385
        [lng] => 42.373917
        [distance] => 6.65195429565453
    )

[1] => Array
    (
        [price] => 1800
        [bedroom] => 1
        [lat] => -71.104248
        [lng] => 42.368172
        [distance] => 4.957829810472103
    )
}

这会被编码到

JSON

[{"price":"1600","bedroom":"1","lat":"-71.119385","lng":"42.373917","distance":"6.65195429565453"},{"price":"1800","bedroom":"1","lat":"-71.104248","lng":"42.368172","distance":"4.957829810472103"}]

的jQuery

$(function() {
    $("#search_button").click(function(e){
        e.preventDefault();
        var search_location = $("#search_location").val();
        $.getJSON('index.php/main/get_places', {search_location: search_location}, function(json){
            $("#result").html(json.lat);
            console.log(json.lat);
        });
    });
});

5 个答案:

答案 0 :(得分:2)

json是一个数组,因此它不具有属性lat

尝试:

json[0].lat

例如,获取第一个对象的lat属性。

答案 1 :(得分:0)

$.getJSON('index.php/main/get_places', {search_location: search_location}, function(json){
  $.each(json, function(key, val) {
      console.log(val.lat);
  });
});

答案 2 :(得分:0)

你的json作为一个对象数组返回,所以你需要先引用标量。将您对json.lat的引用更改为json [0] .lat。

然后,如果你需要,你可以写一个for循环并引用它作为json [i] .lat,假设我是你的迭代器变量。

答案 3 :(得分:0)

json是一个对象数组,就像在你的php代码中一样。

所以有两个lat值:

json[0].lat  // and
json[1].lat

答案 4 :(得分:0)

json变量本身为空,如错误消息所述。所有关于访问json的子索引或者像数组一样迭代它的答案都会因此而失败。

查看jQuery的getJSONparseJSON的文档。 getJSON通过parseJSON传递服务器的响应,将其转换为Javascript对象。 parseJSON返回null“如果您没有传入任何内容,空字符串,null或未定义。”

我会使用浏览器的调试器来查看来自服务器的原始http响应,因为这可能是罪魁祸首。

http://api.jquery.com/jQuery.getJSON/

http://api.jquery.com/jQuery.parseJSON/