LoginSignup
0
0

More than 1 year has passed since last update.

Ajax通信が今どの状態にあるかチェック

Posted at

JSONファイルの読み込みが終わってから処理をしたい,などの場合が多々あるので備忘録
例えば下記の例

var ajax = new XMLHttpRequest();  

    //処理

ajax.onreadystatechange = function() {
    // 処理
};

XMLHttpRequest.readyState プロパティは今の読み込み状況を0〜4で表してくれる

0ー UNSENT インスタンスができた
1ー OPENED openメソッドを利用した
2ー HEADERS_RECEIVED ヘッダーが受信できた
3ー LOADING データを受信中
4ー DONE 通信が終了

例として,alert(ajax.readyState)を入れ状況を見てみると下記のようになる

var ajax = new XMLHttpRequest();  // XMLHttpRequestオブジェクトを作成
// ここの場合は0
ajax.open('GET', 'http://jsonファイル');
//ここの場合は1
ajax.responseType = 'json';
ajax.send(null);

ajax.onreadystatechange = function() {
    alert(ajax.readyState) // ここの場合はajax.send(null);後の2~4が順番に表示される
};

Ajax通信が完了したのを待ってからレスポンスを返す場合

var ajax = new XMLHttpRequest();
ajax.open('GET', 'http://jsonファイル');
ajax.responseType = 'json';
ajax.send(null);


ajax.onreadystatechange = function() {
    if(ajax.readyState === XMLHttpRequest.DONE && ajax.status === 200) {  
       //XMLHttpRequest.DONE = 通信状況4のこと
       // 処理 
    };
};
};

JQueyを使えば簡単になる

// jquery読み込んでから
$.getJSON('https://jsonファイル', function(data) {
    //処理
});

とすれば,JSONファイルの通信が終わってから処理することができる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0