2011-12-06 6 views
0

特に、最近のWebアプリケーションに非同期処理を取り入れようとする私の弱い試みについて、私はStack Overflowに関する優れた指示を受けました。いくつかの問題を最小限に抑えるために、私はgetJSONを使ってjfriend00が述べたいくつかの動作を見るための非常に小さなHTML/javascriptページを作成しました。これまでのところ私が見る限り、これは正当なプログラムですが、IE9はそれを実行しますが、FireFoxは何らかのテキストを出力し、その後ハング/無限ループを行いますが、ChromeはH1(FireFoxはこれを拒否しました)と最後の文字列のみを表示します。明らかに、このコードにはひどく間違ったことがあり、私はそれを見ていません。あなたはどう?小さなモデルを使って非同期処理をテストする

<!DOCTYPE html> 
<html> 
    <head> 
<script type="text/javascript" src="jquery-1.7.1.min.js"></script> 
    </head> 
    <body> 
    <h1>testing 2</h1> 
<script type="text/javascript"> 
    function buildTree() { 
     $.getJSON('MurakiMaida.json', function(data) { 
     document.write("how about here?<br>"); 
     $.each(data.person, function(i, xdata) { 
    document.write(xdata.id + "<br>"); 
     }); 
    }); 
    document.write("<br>what are we doing here?"); 
    } 
    buildTree(); 
    </script> 
</body> 
</html> 

答えて

0

document.writeがおそらく原因です。

正確に何をしようとしているのかわかりませんが、document.writeはページの読み込み中にのみ使用してください。実際には、それを使用しないように、おそらくより良いです。*

<div id='foo'/>を作成し、そのような$('#foo').append($("<div>"+xdata.id+"</div>")

document.writeとしてそれに書き込むバックDOMの前に日中のドキュメントにHTMLを追加するためにJavascriptを使用する方法でした存在した。下位互換性のために存在しますが、避けるべきです。

+0

絶対に正しく、ありがとうございます。 3つのブラウザはすべて同じように動作します。すべてが「ここはどうですか?」と表示されます。文字列。 –

+0

私はあまりにも早く話しました。 IE9は常に「在庫」HTMLのみを表示します:H1と、あなたが推薦するDIVに入れたのと同時に入力したコメント。 Chromeは、ファイルのJSON IDを「ここはどうですか?」という文字列の下に表示します。 MozillaはChromeと同じように表示されます_until_私は単一の関数を入力する際に​​警告を追加します。私がそれをすると、MozillaはIE9の動作を示します。IDはなく、文字列はありません。ちょうど株式HTML。 なぜこれが起こっているのかわからなくても、それは実験の目的でした! - マイケル –

関連する問題