2016-11-21 48 views
3

私はjax/htmlアプリケーションでajaxリクエストを送信してレスポンスを処理しています。デバイスはWindows Mobile CEです。jqueryサポートはなく、デバイスブラウザ(IE)はイベントハンドラをサポートしていないため、非同期呼び出しを使用することはできません。とにかく、私の問題は、イベントを送信する前に、を表示したいのですが、メッセージを待ってください。応答を受け取ったら、もう一度それを隠したいと思います。ajaxリクエストを送信して応答を受信(同期)

function sendRequest() { 
// make please wait visible 
document.getElementById("pleasewait").style.display = "block"; 
console.log("pleasewait visible."); 

var XHR = new XMLHttpRequest(); 
// synch call 

XHR.send(sendData); 

// suppose it takes 20-30 seconds 
console.log("response received :" + XHR.responseText); 

XHR.open('POST', 'url', false); 

// make please wait hidden 
document.getElementById("pleasewait").style.display = "none"; 
} 

しかし、私はそれを実行すると、PLEASEWAIT要素は、我々は(ない送信する前に)応答を受信したときに可視化されるとimmediatelty処理は、例えば20〜30秒かかる場合でも、再び非表示になります。コンソールメッセージは正しい順序で表示されますが、待機待ち要素は正しく更新されません。私はいくつかのsetTimeoutsを試しましたが、望ましい結果はありませんでした。 jsfiddleを追加することはできません。なぜなら、リモートでajaxリクエストハンドラを実装するのは難しいからです。 同期 AJAXリクエストを行うので、synchronous要求が表示再流れを阻止するとき

答えて

1

ブラウザはを凍結します!

setTimeout0の継続時間を使用することをお勧めします。

function sendRequest() { 
 
    document.getElementById("pleasewait").style.display = "block"; 
 
    setTimeout(function() { 
 
    var XHR = new XMLHttpRequest(); 
 
    XHR.send(sendData); 
 
    console.log("response received :" + XHR.responseText); 
 
    XHR.open('POST', 'url', false); 
 
    document.getElementById("pleasewait").style.display = "none"; 
 
    }, 0); 
 
}

注:Hereは、いくつかの関連情報です!

+0

Worked!ありがとう! – benchpresser

関連する問題