У меня есть простой 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>