0

こんにちは、私は自分のサイトに実装した単純な getJSON 呼び出しを持っています。正常に動作しますが、IE7 は出力してエラーになるようです。誰が私に何が起こっているのか教えてもらえますか?

    var output = '';
    var fullurl = 'myurl'
    $.getJSON(fullurl, function(json) {

    $.each(json, function(i,d) {
        output = '<span style="font-size:11px;"><b>Name :</b> '+d.Name+'</span><br>';
        output += '<span style="font-size:11px;"><b>Date :</b> '+d.Date+'</span><br><br>';
        output += '<span style="font-size:11px;"><b>Description :</b> '+d.Description+'</span><br>'; 
    }); 
    $('#description').append(output);

2つのエラーがポップアップしています

 Error: Object doesn't support this property or method
 Error: Expected identifier, string or number

どんな助けでも大歓迎です!

ありがとうございました。

4

1 に答える 1

2

この種の問題を解決する最善の方法は、IEのコピーをIE7エミュレーションに入れてから、F12を使用してデバッガーを起動することです。次に、その行にブレークポイントを設定して$.each()、JSON呼び出しの結果を調べることができます。次に、イテレーション内にブレークポイントをさらに設定.each()し、エラーが発生してエラーの原因となっているデータ/コードを確認できるまで、各ブレークポイントをステップスルーできます。IEコンソールは、エラーの原因となっているコード行を正確に通知する場合もあります。

何が間違っているのかを推測したい場合は、次のように推測します。

  1. JSONデータを取得していない場合は、実行するもの.each()がなく、input初期化されることはありません。その後、を実行しようとすると$('#description').append(output);outputが定義されていない可能性があり、エラーが発生します。

  2. さらにinput、ローカル変数として宣言する必要があります。

  3. さらに、現在のコードはinputループのすべての反復からの値を蓄積していません-それは最後の反復を取得しているだけです。あなたの意図が正確にはわかりませんが、おそらくinputループの外側で初期化し、ループ+=の内側で3行すべてに使用したいと思うでしょう。これは、ループごとに置き換えられるのではなく、蓄積されます。

これらの変更を組み込んだコードは次のとおりです。

var fullurl = 'myurl';
$.getJSON(fullurl, function(json) {
    var output = "";
    $.each(json, function(i,d) {
        output += '<span style="font-size:11px;"><b>Name :</b> '+d.Name+'</span><br>';
        output += '<span style="font-size:11px;"><b>Date :</b> '+d.Date+'</span><br><br>';
        output += '<span style="font-size:11px;"><b>Description :</b> '+d.Description+'</span><br>'; 
    }); 
    $('#description').append(output);
});
于 2013-03-08T21:28:30.313 に答える