2011-10-18 98 views
0

我有一個PHP數組,我想傳遞給調用它的jQuery函數。然而,當我嘗試按照我在下面的方式檢索'lat'的值時,出現錯誤Cannot read property 'lat' of null,顯然是因爲我不知道如何訪問多維JSON數組。任何人都可以告訴我如何?將多維JSON數組傳遞給jQuery函數

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); 
     }); 
    }); 
}); 

回答

2

json是一個數組,因此它不會有屬性lat

嘗試:

json[0].lat 

爲了得到第一個對象的緯度屬性,例如。

+0

'的console.log(JSON [0] .lat);'沒有造成什麼在JavaScript控制檯登錄... – Nyxynyx

+0

那麼'JSON'是不是有什麼你說它是:) – Hamish

+0

我檢查了不使用AJAX返回的JSON字符串。這真的是JSON哈哈......這是否與'JSON'字符串沒有任何索引編號像'1 :, 2:' – Nyxynyx

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

你的json作爲一個對象數組返回,所以你需要首先引用標量。將您對json.lat的引用更改爲json [0] .lat。

然後,如果您需要,您可以編寫for循環並將其引用爲json [i] .lat,假設我是您的迭代器變量。

0

json是一個對象數組,就像它在你的php代碼中一樣。

因此有兩個緯度值:

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

json變量本身爲空,如由錯誤消息說明。關於訪問json的子索引或者像數組一樣遍歷它的所有答案都會因此而失敗。

查看jQuery的文檔getJSONparseJSONgetJSON通過parseJSON傳遞服務器的響應,將其轉換爲Javascript對象。 parseJSON返回null「如果您傳入任何內容,空字符串,null或未定義。」

我會使用瀏覽器的調試器來查看來自服務器的原始http響應,因爲這可能是罪魁禍首。

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

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