Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery-$.ajax-firefox10超前运行_Javascript_Jquery_Ajax_Firefox - Fatal编程技术网

Javascript JQuery-$.ajax-firefox10超前运行

Javascript JQuery-$.ajax-firefox10超前运行,javascript,jquery,ajax,firefox,Javascript,Jquery,Ajax,Firefox,我有一个简单的$.ajax POST调用,用于填充HTML元素的XML文件。它在IE 9中运行良好。“error:”子句在两种浏览器中都可以正常工作。在“success:”案例中,IE 9礼貌地在A点等待“success:”子句完成。Eager beaver FF 10闯入一个看起来像一个单独线程的世界,在“design_xml”变量启动并运行之前返回调用的“doPopulate()”函数,因此无法加载HTML元素 但是如果我让它在最后一行等待window.alert,它就会正常工作——显然是提

我有一个简单的$.ajax POST调用,用于填充HTML元素的XML文件。它在IE 9中运行良好。“error:”子句在两种浏览器中都可以正常工作。在“success:”案例中,IE 9礼貌地在A点等待“success:”子句完成。Eager beaver FF 10闯入一个看起来像一个单独线程的世界,在“design_xml”变量启动并运行之前返回调用的“doPopulate()”函数,因此无法加载HTML元素

但是如果我让它在最后一行等待window.alert,它就会正常工作——显然是提供了一个暂停,让$.ajax调用跟上。现在我不想只在这里发出警报,所以我尝试了各种延迟循环——超时、for循环等等——但它们都不起作用。有人能告诉我这里发生了什么事吗

URL是本地计算机。WindowsVista

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:

gaberlunzie
HTML:


文件名

$(“#fn”).text($('filename',design_xml).text())design\u xml

AJAX扩展为异步JavaScript和xml之后,code>应该位于
success
参数中,并且您希望请求是同步的。这不是“提前运行”,而是它应该如何工作。问题应该是为什么IE速度如此之慢,以至于操作在到达该部分之前就完成了。包括“async:false”似乎没有任何区别。我在这里摸索着,嚼着这个软骨,所以我要再玩一会儿。谢谢。或者甚至只是使用传递给success的xml,不需要全局设计xml,除非他们在其他地方使用它。谢谢-我认为这会解决问题-在用户输入事件停止之前有一些下游代码,所以我需要检查一下,但我认为这会让我度过难关。非常感谢。Dampsquid-它为用户形成文档,因此设计xml需要是全局的。谢谢
<filename default="untitled">gaberlunzie</filename>
<body>
    <button onclick="doPopulate()"></button>
    <div>
        <span id="fn">Filename</span>
    </div>
</body>