0

私は次のようなjsonファイルを持っています:{ total: 86, success: true, "rows": [ {"a1_id":"3231VB8",などなど。

<total: 86, success: true, "rows":>私の問題は、たとえばこのjsonファイルからGoogleマップにマーカーを入力するためにjqueryを使用する場合、jsonファイルの先頭で置き換えるまでそうしないこと<"markers":>です。

問題ありませんが、そうすると、同じURL/ファイルからの別のjsonリクエストが壊れます。

質問:これにどのように対処すればよいですか?私のjsonファイルまたはshを処理するようにgmapコードを変更する方法はありますか?

function(data) { 
    $.each( data.markers, function(i, m) {
            $('#map_canvas').gmap('addMarker', { 'position': new google.maps.LatLng(m.latitude, m.longitude), 'bounds':true } );
4

2 に答える 2

0

JSONLintを使用してJSON出力を検証した後、文字列「total」と「success」を引用符で囲むように提案されました。だから私はそうしました、そしてJSON出力は正しく検証されます。

その結果、ExtJとGoogleマップが私のJSONファイルを受け入れました。

覚えておくべきこと:一方のアプリケーションがJSON(ExtJs)を受け入れている場合、もう一方のアプリケーションも受け入れているとは言えません。(グーグルマップ)。

于 2012-05-16T15:35:58.410 に答える
0

つまり、基本的に、JSONの「rows」プロパティの名前を「markers」に変更する方法を尋ねています。「markers」は、JS/jQueryコードの特定の部分で使用されるものだからです。また、既存のJSONを他のプロセスでそのまま使用できるように、そのコードに変更を加える必要がありますか?

もしそうなら、JS / jQueryコードに次の小さな変更を加えて、「マーカー」ではなく「行」プロパティを参照してみませんか。

...
    $.each( data.rows, function(i, m) {
...

唯一の変更は、に渡される最初のパラメータ$.each()です。JSONの「total」パラメーターと「success」パラメーターは、表示したコード(変更の前後の両方)によって単に無視されるため、実際に削除する必要はありません。

何らかの理由でdata、JSONを解析して作成されたと思われるオブジェクトを実際に変更する必要がある場合は、次のように試すことができます。

    data = { "markers" : data.rows };

つまり、元のオブジェクトの「rows」配列を参照する単一のプロパティ「markers」を持つ新しいオブジェクトを作成してdataから、新しいオブジェクトを指すように変数を再割り当てします。次に、そのまま使用します$.each()

于 2012-05-16T07:38:16.557 に答える