2016-09-14 2 views
-1

Ich bin nicht sehr an XML-Anforderungen gewöhnt, aber gibt es eine Möglichkeit, Code vor einer XMLHttpRequest auszuführen. Was ich versuche ist, eine Anfrage zu senden und eine neue URL zu öffnen. Aber da dies ein paar Sekunden dauert und ich ein paar Anfragen gleichzeitig habe, möchte ich einen Ladebildschirm beim Senden von Anfragen erscheinen lassen. Hier ist mein Code so weit:Javascript vor XML-Anforderung ausführen

function sendRequests(){ 

    url = "placeholder"; 
    url2 = "placeholder2"; 

    displayObject("loadingScreen"); 

    var xmlHttpCart = new XMLHttpRequest(); 
    xmlHttpCart.open("GET", url, true); 
    xmlHttpCart.send(null); 

    window.open(url2,"_self"); 
} 

function displayObject(i) { 
    var id = "" + i; 
    document.getElementById(i).style.display = "inherit"; 
} 

Leider die Display() Funktion ausgelöst wird, nachdem die Anforderung beendet ist.

dank

+0

Nein, 'displayObject' wird vor dem' XMLHttpRequest' ausgelöst. – Dieterg

+0

Aber warum wird das Stilattribut geändert, nachdem die Anfrage abgeschlossen ist? – tinytree

+0

Das hängt von Ihrem Code ab. Wir haben nicht genug Informationen – Dieterg

Antwort

0

Der Browser die JavaScript ausgeführt wird beendet, bis es was auch immer endet es tut. Dies verhindert das Neuzeichnen der Anzeige.

xmlHttpCart.open("GET", url, false); // false for synchronous request 

Dies ist ein Beispiel dafür, warum false mit dort ist veraltet und Sie nicht tun sollten, dass.

+0

hmm ... versucht, dass mit synchronous asynchron mit asychrone Anfrage, aber das gleiche Ergebnis zuerst erhalten. Jetzt habe ich es erneut versucht und plötzlich scheint es zu funktionieren. Danke, dass ich es erneut versuchen darf. Aber jetzt habe ich das Problem, dass ich die Seite verlassen werde, bevor alle Anfragen bearbeitet werden ... – tinytree