私のページには、Flickr から返された画像の未加工の JSON データを受け取るスクリプトがあります。readyState を使用して、進行中のライブ フィードバックを提供したいと考えています。
私の現在のコードでできることは、readyState が 4 でステータスが 200 であることを確認することです。これが true の場合、生の JSON データをページに追加します。
コード:
function sendRequest (request) {
//Request is the URL string to flickr containings tags entered by the user.
x = new XMLHttpRequest();
x.open("GET", request,false);
x.send(null);
if (x.readyState==4 && x.status==200)
{
document.getElementById("resultsContainer").innerHTML="Raw JSON Data: <br>"+x.responseText+"<br><br>";
}
}
ご覧のとおり、受け取った値が resultsContainer div に追加されます。次のように、同じ div にフィードバックを追加しようとしました。
if(x.readyState==3){
document.getElementById("resultsContainer").innerHTML="Processing Request";
}
しかし、それは効果がありません。準備完了状態 4 を正常に認識し、3 を認識しないのはなぜでしょうか?
onreadystatechange 関数があることを理解しており、それを使用しようとしましたが、コードがまったく実行されませんでした。つまり、機能しませんでした。
リクエストが発生している間にアクションを実行するにはどうすればよいですか (readyState == 3) ?
編集:
CURRENT CODE:
function sendRequest (request) {
x = new XMLHttpRequest();
x.open("GET", request,true);
x.send();
x.onreadystatechange = function () {
if (x.readyState==4 && x.status==200){
document.getElementById("resultsContainer").innerHTML="success <br>"+x.responseText;
}
if(x.readyState==3){
document.getElementById("getIms").value="Processing";
}
}
}
要素 getIms の値は、値が返されて結果コンテナーに追加された場合にのみ処理に変更されます。