2011-10-18 21 views
0

呼び出すjQuery関数に渡すPHP配列があります。しかし、私が下で行ったように 'lat'の値を取得しようとすると、多次元JSON配列にアクセスする方法がわからないため、エラーCannot read property 'lat' of nullが表示されます。誰も私にどのように表示できますか?多次元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 LOLです。これは '1 :, 2:'のようなインデックス番号を持たない 'JSON'文字列と関係しますか? – 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として参照することができます。これは、iが反復子変数であることを前提としています。

0

jsonは、あなたのPHPコードと同じように、オブジェクトの配列です。エラーメッセージによって述べたよう

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

json変数自体は、nullである:

がので、2つのLAT値があります。 jsonのサブインデックスにアクセスすることに関するすべての答え、または配列のようにそれを反復処理することは、このために失敗します。

jQueryのgetJSONparseJSONのドキュメントをご覧ください。 getJSONは、サーバーの応答をparseJSONに渡して、Javascriptオブジェクトに変換します。 parseJSONは、「何も渡さない場合は空の文字列、nullまたは未定義」を返します。

私はあなたのブラウザのデバッガを使用して、サーバーからの生のhttp応答を調べます。これはおそらく原因です。

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

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