PHP は常に JavaScript の前に動作するため、JavaScript を取得して PHP を再度実行させる唯一の方法は、別のリクエストを開始することです。JavaScript はXMLHttpRequest
、より一般的には AJAX として知られている を使用して、新しいページに移動せずにリクエストを開始できます。JavaScript コードは次のようになります。
// For old versions of Internet Explorer, you need to catch if this fails and use
// ActiveXObject to create an XMLHttpRequest.
var xhr = new XMLHttpRequest();
xhr.open("GET" /* or POST if it's more suitable */, "some/url.php", true);
xhr.send(null); // replace null with POST data, if any
これでリクエストは問題なく送信されますが、結果のデータも取得する必要があるでしょう。そのためには、コールバックを設定する必要があります (おそらく を呼び出す前にsend
):
xhr.onreadystatechange = function() {
// This function will be called whenever the state of the XHR object changes.
// When readyState is 4, it has finished loading, and that's all we care
// about.
if(xhr.readyState === 4) {
// Make sure there wasn't an HTTP error.
if(xhr.status >= 200 && xhr.status < 300) {
// It was retrieved successfully. Alert the result.
alert(xhr.responseText);
}else{
// There was an error.
alert("Oh darn, an error occurred.");
}
}
};
注意すべきことの 1 つは、要求を開始send
するだけであるということです。完了するまで待機しません。場合によっては、それに対応するためにコードを再構築する必要があります。