JQuery - $ .ajax - Firefox 10 работает впереди себя - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть простой POST-вызов $ .ajax для XML-файла для заполнения HTML-элементов. В IE 9 работает нормально. Предложение «error:» отлично работает в обоих браузерах. В случае «success:» IE 9 вежливо ждет в точке A: завершение предложения «success:». Eager-beaver FF 10 врывается в то, что выглядит для всего мира как отдельный поток, возвращается к вызывающей функции doPopulate () до того, как переменная «design_xml» будет запущена, и, следовательно, не сможет загрузить элемент HTML.

Но если я заставлю его подождать с окном window.alert в последней строке, это заставит его работать правильно - очевидно, предоставляя паузу, чтобы позволить вызову $ .ajax наверстать упущенное. Теперь я не хочу оповещения только здесь, поэтому я пробовал различные циклы задержки - тайм-аут, цикл for и т. Д. - но ни один из них не работает. Кто-нибудь может сказать мне, что здесь происходит?

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:

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

1 Ответ

2 голосов
/ 28 февраля 2012

Строка $("#fn").text($('filename', design_xml).text()); должна быть в параметре success после того, как вы установите design_xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...