JQuery - $ .ajax - Firefox 10超前运行

时间:2012-02-28 12:58:29

标签: javascript jquery ajax firefox

我有一个简单的$ .ajax POST调用,用于填充HTML元素的XML文件。它在IE 9中工作正常。“error:”子句在两种浏览器中都能正常工作。在“成功:”案例中,IE 9在A点礼貌地等待:“success:”条款完成。 Eager-beaver FF 10在一个单独的线程中寻找全世界的东西,在“design_xml”变量启动并运行之前返回到调用“doPopulate()”函数,因此无法加载HTML元素。 / p>

但是,如果我让它在最后一行中使用window.alert等待它正常工作 - 显然提供暂停让$ .ajax调用赶上。现在我不想在这里发出警报,所以我尝试了各种延迟循环 - 超时,for-loop等 - 但它们都不起作用。谁能告诉我这里发生了什么?

网址是本地计算机。 Windows Vista。

var design_xml = null; //Global variable to hold design XML
var template_url = "Docs_and_notes/Design_template_02.xml";  //Template URL (temp loc.)
var template_urlzz = "Docs_and_notes/zzDesign_template_02.xml";  // Duff template URL for testing

function getDefaults() {
    $.ajax({
    type: "POST",
    url: template_url,
    timeout: 5000, // 5 seconds or go home
    success: function(xml) {
console.log("Succeed");
        design_xml = xml; xml = null;  //Make XML global, kill original 
    },
    error: function(request, status, err) { //Catch misfires
console.log("Fail");        
        window.alert("Error 001: Design template not loaded. Status: " + status + " err:" + err);   
    }
//Point A:      
    //window.alert("Final line");   
    }); 

function doPopulate() {
    getDefaults();
    $("#fn").text($('filename', design_xml).text());
}

XML:

<filename default="untitled">gaberlunzie</filename>

HTML:

<body>
    <button onclick="doPopulate()"></button>
    <div>
        <span id="fn">Filename</span>
    </div>
</body>

1 个答案:

答案 0 :(得分:2)

设置$("#fn").text($('filename', design_xml).text());后,行success应位于design_xml参数中。