0

私はJavaScriptを使用して画像を出力しています.FFとChromeではすべて正常に動作しますが、IEではページを初めてロードしたときに最初の画像のみが追加され、ページを更新した後にのみすべての画像が追加されます.

画像を出力するJavascript:

  $.getJSON("php/v.php?"+Math.random(),function(data){              
                $.each(data,function(l){
                        if(data[l]['s']==1){                
                             $("#img"+(l+1)).append("<img src='"+data[l]['img']+"' />");
                        }                   
                    });
        });

v.php からの IE9 開発ツールの応答から:

[{"img":"https:\/\/www.example.com\/example.jpg","s":"1"},{"img":"https:\/\/www.example.com\/example.jpg","s":"1"},{"img":"https:\/\/www.example.com\/example.jpg","s":"1"}]

したがって、問題は getJSON ではなく各要素によって引き起こされたはずです。stackoverflow に関する多くの同様の質問が見つかりましたが、そのようなものはありません (http://stackoverflow.com/questions/7785138/each-method-only-applies-to-first-element-in-ie,http://stackoverflow.com/questions /4664190/javascript-each-loop-over-json-only-getting-first-element) ですが、私の場合、問題は IE9 でも発生します。

4

2 に答える 2

0

JSON に構文エラーがあります。2 番目の URL には 2 つの閉じ引用符 " があります

于 2012-11-27T10:22:14.380 に答える
0

最初に次のようにローカルブラウザでデバッグできると思います:

var data= [{},{},{}];//your data

$.each(data,function(l){
    if(data[l]['s']==1){                
        $("#img"+(l+1)).append("<img src='"+data[l]['img']+"' />");
    }                   
});

//and this way
for(var i=0,l=data.length; i<l; i++){
    if(data[l]['s']==1){                
        $("#img"+(l+1)).append("<img src='"+data[l]['img']+"' />");
    } 
}

//and the third way
for(var i=0,l=data.length; i<l; i++){
    if(data[l]['s']==1){
        var img = new Image();
        img.onload = function(){
            var id = '#img'+(l+1);
            $(id).append(this);
        }
        img.src = data[l]['img'];
    } 
}
于 2012-11-27T10:32:41.923 に答える