2011-12-06 67 views
0

我已經收到了很多關於堆棧溢出的優秀指令,尤其是關於我在最近的Web應用程序中加入異步處理的嘗試。爲了將一些問題縮小到最低限度,我創建了一個非常小的HTML/JavaScript頁面,以便使用getJSON並查看jfriend00提到的一些行爲。據我所知,這是一個合法的程序,但雖然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是使用JavaScript的HTML在天DOM之前添加到文檔回來的路上存在。它仍然存在向後兼容性,但應該避免。

+0

絕對正確,謝謝。現在所有三種瀏覽器的工作方式都相同。所有隻顯示「這裏怎麼樣?」串。 –

+0

我說得太快了。 IE9總是隻顯示「股票」HTML:H1和我在放入您推薦的DIV時同時輸入的評論。 Chrome總是在字符串下方的文件中顯示JSON ID「這裏怎麼樣?」 和Mozilla顯示相同的Chrome _until_我在進入單一功能時添加警報。當我這樣做時,Mozilla展示IE9的行爲:沒有ID,沒有字符串。只是股票的HTML。 即使我不明白爲什麼會發生這種情況,這是實驗的目的!邁克爾 –