我有一个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);
});
});
});
答案 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的getJSON
和parseJSON
的文档。 getJSON
通过parseJSON
传递服务器的响应,将其转换为Javascript对象。 parseJSON
返回null“如果您没有传入任何内容,空字符串,null或未定义。”
我会使用浏览器的调试器来查看来自服务器的原始http响应,因为这可能是罪魁祸首。