2016-09-14 9 views
-1

私はXMLリクエストにあまり慣れていませんが、XMLHttpRequestの前にコードを実行する方法があります。私がしようとしていることは、リクエストを送信して新しいURLを開くことです。しかし、これには数秒かかり、一度にいくつかのリクエストがあるので、リクエストを送信しているときに読み込み画面が表示されます。ここまでは私のコードです:XMLリクエストの前にjavascriptを実行する

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"; 
} 

残念なことに、displayObject()関数は要求が完了した後にトリガーされます。

ありがとう

+0

いいえ、 'displayObject'は' XMLHttpRequest'の前にトリガーされます – Dieterg

+0

しかし、リクエストの終了後にスタイル属性が変更されるのはなぜですか? – tinytree

+0

これはコードによって異なります。私は十分な情報がありません – Dieterg

答えて

0

ブラウザは、実行中に何かが終了するまで、JavaScriptの実行を終了します。これは、ディスプレイの再描画をブロックします。

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

はこれが廃止され、あなたがことをやるべきではないfalseを使用する理由の一例です。

+0

うーん...非同期リクエストと同様に同期してみましたが、最初は同じ結果を得ました。今私はもう一度やり直して、突然それがうまくいくように思える。もう一度お試しいただきありがとうございます。しかし、今、私はすべての要求が処理される前に、私は、ページを残すことに問題があります... – tinytree

関連する問題