2011-12-06 33 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。 即使我不明白为什么会发生这种情况,这是实验的目的!迈克尔 –