2012-02-20 9 views
0

php/jsonファイルを読み込みます。これは私のjsonファイルです:javascriptでjsonを解析する

echo '{'; 
echo '"position":['; 
while($inhoud = mysql_fetch_array($result)) 
{ 
    echo '{'; 
    echo '"lat":"'.$inhoud['lat'].'",'; 
    echo '"long":"'.$inhoud['long'].'",'; 
    echo '}'; 

} 

echo ']}'; 

これは動作します。私はJavaScriptでそれをロードすると、このようにそれを実行します。

$.getJSON('req/position.php', function(data) { 
$.each(data, function(key, val) { 
    newLatLng = key; 
}); 
}); 

が、これは動作しません。それはファイルを読み込みますが、私はこのデータを取得しません。私は何をすべきか?

おかげで、

+0

* "これは機能しません" *。それは何が起こると思いますか?何らかのエラーメッセージがあればそれを受け取りますか?あなたが何かを成し遂げようとすると、ブラウザでjavascriptコンソールが何を出力するのですか?* "does not work?" * – rdlowrey

+0

まあ、何もありません。ファイルをロードしてから何もロードしません。私はアラートを追加しますが、これは起動しませんでした –

答えて

1

あなたはpositionという名前の配列で定義されているあなたの座標を持っています。あなたはそれを反復する必要があります。配列には、プロパティーlatlongのオブジェクトが含まれています。

$.getJSON('req/position.php'), function(data){ 
    $.each(data.position, function(index, value){ 
     var newLatLng = { latitude: value.lat, longitude: value.long }; 
    }); 
}); 
+0

私はこれを行います: $ .getJSON( 'req/position.php')、function(data){ $ .each(data.position、function(index、value){ アラート( '成功'); }); }; アラートが表示されません。 –

0
$.getJSON('req/position.php', function(data) { 
    var obj = JSON.parse(data); 
    // At this point, obj is an object with your JSON data. 
}); 

出典::あなたが値を使用したい場合は、あなたのような何か試してみてくださいPHPスクリプト header('Content-type: application/json');MDN

1

戻り、適切なヘッダをそして、それは動作するはずです。

json_encodeも有効なJSONにPHP値をエンコードします。

5

JSON出力に構文エラーがあると思います。

  • あなたの出力"long"データ"long"は、オブジェクトの最後のキーであるので、あなたが最後にコンマ,を追加、しかし、あなたはいけません。
  • whileサイクルのオブジェクトを出力します。これらのオブジェクトは配列の一部です。したがって、最後のものを除いて、}の後にコンマ,を追加する必要があります。

そして、私は、なぜあなたはjson_encode() PHP関数を使用して、代わりにすべてのJSON文字列手動を構築していない頼むことができるかどうか?これで、すべてのデータを通常のPHP配列として構築し、それをJSONでエンコード(翻訳)します。これらの厄介な構文のすべてを避けることができます。

ちょうどそれを試してみてください:文字列を通じてPHPでJSONを構築

$data = array(); 
$data['position'] = array(); 

while($inhoud = mysql_fetch_array($result)) 
{ 
    $data['position'][] = array(
     "lat" => $inhoud['lat'], 
     "long" => $inhoud['long'] 
    ); 
} 

echo json_encode($data); 
+0

私はこのコードに私のjsonを変更しました。私はjson_encodeを知らなかった。すごくいい!ありがとう。それはスクリプトを修正しなかったが、私はこのきれいな方法に満足している –

1

は動作しますが、原始的です。配列の構築を開始し、json_encode()を使用します。

$arr = array(); 

while($inhoud = mysql_fetch_array($result)){ 
    $temp = array(); 
    $temp['lat'] = $inhoud['lat']; 
    $temp['long'] = $inhoud['long']; 
    $arr[] = $temp; 
} 

echo json_encode($arr); 

あなたのmysqlのクエリで選択しているすべてはあなたにもちょうどそうのようなあなたのwhileループ内$arr$inhoudを置くことができる「緯度」と「長い」の場合。

while($inhoud = mysql_fetch_array($result)){  
    $arr[] = $inhoud; 
} 

これを行う場合は、mysqlクエリの中でJSONで出力したい列だけを選択するようにしてください。

関連する問題