Ajaxのonreadystatechangeとonloadの違いについて教えてください
Ajaxにおいて、onreadystatechangeとonloadは、2種類のイベント発火器です。それらの違いは次のとおりです。
- onreadystatechange:XMLHttpRequest オブジェクトの readyState プロパティが変わったときに発生するイベントハンドラです。readyState プロパティはリクエストの状態を示していて、0 から 4 の 5 つの値を取ります。0 は初期化されていない、1 はロード中、2 はロード完了、3 はインタラクティブ、4 は完了です。readyState が 4 に変化したときは、リクエストが完了していることを示し、レスポンスデータを処理できます。onreadystatechange イベントはリクエストの各ステージで発生するので、readyState の値によって処理を変更できます。
- onload: HTTPリクエスト全体が完了しデータのロードがブラウザ上で完了したときに発生するイベントハンドラ。readyStateが4になりリクエストが完了したときにのみ発生します。onloadイベントは、リクエストの成功時のみ発生し、リクエストに失敗やエラーがあればonloadイベントは発生しません。
そのため、onreadystatechangeイベントはリクエストのさまざまな段階で発火するのに対し、onloadイベントはリクエストが正常に成功した場合のみ発火します。Ajaxリクエストを処理する場合は、通常onreadystatechangeイベントでreadyStateの変化を監視し、readyStateが4の場合にデータ処理を実施します。一方、onloadイベントはリクエストが正常に終了後の処理に使用できます。