2011-11-09 10 views
0

私はJSONにちょっと新しいので、これを行うための最善の方法を理解しようとしています。私は2つの変数を持っています:postcodeとenergyratingはJSONに入れて、forループを解析したいのです。このwhileループの正しいJSON構造は何ですか?

私は1つの変数で動作させることができますが、2つの変数を使用すると動作しません。ここで

は私のJSONです:ここでは

header('Content-type: application/json'); 

$postcodeArray = array('postcodes' => array("E6 2JG","SE1 2AQ","DA1 1DZ"), 'energyrating' => array("A","B","C","D","E","F","G")); 

die(json_encode($postcodeArray)); 

は私のjQueryのです:

function addNew(postcodes) { 
if(postcodes.length > 0) { 
    for(var i = 0; i < postcodes.length; i++) { 

     var address = postcodes[i]; 
     var rating = energyrating[i]; 

     geocoder.geocode({ 'address': address }, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       map.setCenter(results[0].geometry.location); 

       var image = '../img/markers/' + rating + '.png'; 
       var marker = new google.maps.Marker({ 
        map: map, 
        position: results[0].geometry.location, 
        icon: image 
       }); 
      } else { 
       alert("Geocode was not successful for the following reason: " + status); 
      } 
     }); 
    } 
} else { 
    alert("Sorry, no data was found."); 
} 
} 

私は、これは両方の変数で動作するように取得するにはどうすればよいですか?

+0

あなたの 'addNew()'関数はどのように呼び出されますか?また、 'postcodes'と 'energyrating'が異なる長さの配列であることを示したデータについては、両方の配列を同じforループでどのようにループできますか? – nnnnnn

答えて

0

正確には動作しません。

あなたのコードを読んで、私はあなたのコードにエラーがあると言います。 energyrating引数は、あなたのaddNew関数に欠落しています。そのようなデータを格納するための

addNew(jsonData.postcodes, jsonData.energyrating); 
0

使用JSON変数:

$postcodeArray = '{"postcodes":{"0":E6, "1":"2JG", "3":"SE1 2AQ","4":"DA1 1DZ"}, "energyrating":{"0":"A","1":"B","2":"C","3":"D","4":"E","5":"F","6":"G"}}'; 

function addNew(postcodes, energyrating) { 

は、あなたがこのようなあなたの関数を呼び出すと仮定すると、

のところで
$postcodeArray = JSON.parse('postcodes' => array("E6 2JG","SE1 2AQ","DA1 1DZ"), 'energyrating' => array("A","B","C","D","E","F","G")); 

値にアクセスできます。

またはaddNewファーストラインのjson_decode(postcodes)を試してください。

関連する問題