0

jQuery の$.getJSONメソッドを使用して JSON ページにリクエストを送信し、返された JSON から HTML を作成してページに配置しています。

ネストされた JSON オブジェクトがある場合に問題が発生します。後で例を示します。

まず、JSON ページにリクエストを送信して次の JSON を返すと、関数は問題なく動作し、美しい HTML 要素がページに表示されます。

JSON:

({
     "variants": [
         {
             "variantId": "536",
             "title": "Party Like a Rock Star for Two at the Metropolitan hotel, London ",
             "price": "£299.00"         
         }
     ]
})

これは問題なく動作し、エラーはありません。

ただし、以下の JSON を返すとすぐに、関数は機能しません。

({
     "variants": [
         {
             "variantId": "536",
             "title": "Party Like a Rock Star for Two at the Metropolitan hotel, London ",
             "price": "£299.00",
             "blogs": [
                 {
                     "title": "Another test",
                     "author": "Sean",
                 },
                 {
                     "title": "This is a test",
                     "author": "Sean",
                 }
             ]
         }
     ]
})

ご覧のとおり、壊れすぎる原因となる文字は含まれていません。また、フィールドの名前を変更してみましたが、たまたま「ブログ」、「タイトル」、または「作成者」が JS の予約語でした (思ったとおり、違いはありません!)。

問題を引き起こしているのが私のデータ処理方法ではないことを確認するために、アラート ('Got here.'); をスタックしました。私の $.getJSON 関数の最初のコード (以下を参照) として、それは起動しないので、エラーの原因となっているデータで行っていることではないことがわかります。

$.getJSON('/ajax/cover_flow_detail.ashx?experienceId=' + arguments[0], function(d) {
        alert('Got here'); // doesn't fire ?

        // omitted for brevity.

}

さらに奇妙なことに、これは IE6 でのみ発生します。IE7 と FF は問題ありません。

正しい方向へのプッシュは大歓迎です、私は完全に困惑しています!

乾杯、ショーン

4

3 に答える 3

9

JSON にエラーがあります — 一部のオブジェクト定義の末尾にコンマがあります。

(これは、JSON ライブラリではなくテンプレートを使用して JSON を生成していることを示唆していますが、これは間違いです。)

IE は、他のブラウザーよりもこのエラーを許容しません。

于 2009-11-19T14:53:59.530 に答える
0

Internet Explorer は、末尾のコンマで壊れることで有名です

var obj = {
     upper: 1,
     stage: 2,
};

IE では失敗しますが、他のブラウザーは 2 番目の要素の後の末尾のコンマを無視します。

于 2009-11-19T15:00:28.160 に答える
0

皮肉なことに、それはエラーになるはずです。IEはそれを正しく行いました。構文が正しくない場合、ブラウザは JSON を大まかに解析すべきではありません。, は ; のように扱う必要があります。それから。

EXT JSでは厳密なので、パーサーだと思います。

不適切に閉じられた HTML タグが、Netscape ではなく IE によって無視されることを覚えておいてください。回り道が面白い。

于 2009-11-19T18:20:05.150 に答える