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 は問題ありません。
正しい方向へのプッシュは大歓迎です、私は完全に困惑しています!
乾杯、ショーン