2012-02-28 5 views
0

HTMLファイルにXMLファイルを埋め込むための簡単な$ .ajax POST呼び出しがあります。 IE 9では正常に動作しています。「エラー:」句は、両方のブラウザで正常に動作します。 「成功:」の場合、IE 9はA点で丁寧に待機します。「成功:」句が完了するためです。 Eager-beaver FF 10は、別のスレッドのように世界中を探すために「design_xml」変数が起動して実行される前に呼び出し元のdoPopulate()関数に戻り、結果としてHTML要素を読み込めません。

最後の行でwindow.alertを待っていると、これは正常に動作します。$ .ajaxコールが追いつくのを一時停止しているようです。今ここでは警告が欲しくないので、タイムアウト、for-loopなどさまざまな遅延ループを試しましたが、どれも機能しません。誰がここで何が起こっているか教えてもらえますか?

URLはローカルマシンです。 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:あなたはdesign_xmlを設定した後

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

AJAXは_Asynchronous_JavaScriptとXMLに展開され、リクエストは同期すると見込んでいます。それは "先行する"ことではなく、単にそれがどのように働くのかということです。 – Xion

+0

質問は実際にIEが遅いので、操作が完了する前にIEが遅くなってその部分に到達することもあります。 – f0x

+0

"async:false"を含めても違いはありません。私はここで私のやり方を感じていて、握りつぶしているので、もう少し一緒に遊びます。ありがとう。 – sdawson

答えて

2

ライン$("#fn").text($('filename', design_xml).text());は、successパラメータにする必要があります。

+0

、あるいは成功したxmlを使用しても、グローバルなdesign_xmlは必要ありません。 – Dampsquid

+0

bdares、ありがとうございます - それは解決すると思います。ユーザー入力イベントのために停止する少し下流のコードがあります私はそれを確認する必要がありますが、私はそれが大騒ぎの上に私を得ると思う。ありがとうございました。 Dampsquid - それはユーザー用のドキュメントを形成するので、design_xmlはグローバルである必要があります。ありがとう。 – sdawson

+0

はい - 固定。どうもありがとう。 – sdawson

関連する問題