Javascript: XMLHttpRequest を使用して、Web サーバー上の特定の php ルーチンによってエコーされる少量のデータを取得します。コールバック関数で非同期。または同期、オッズはありません。
この問題は、php ファイルが存在しないかアクセスできない場合に発生します。responseText プロパティは、エラー フラグを返す代わりに、サーバー 404 エラー ページの HTML コンテンツを返します。
404 ページのコンテンツはサーバーごとに異なるため、文字列テストでこの状況をトラップすることは事実上不可能です。エラーが発生したという事実にフラグを立て、代わりに null を返す方法はありますか?
// envvars is set previously
AjaxRequest.open('post','handler.php?nocache='+nocache,true);
AjaxRequest.setRequestHeader("User-Agent",'Firefox');
AjaxRequest.onreadystatechange = aCallback;
AjaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
AjaxRequest.setRequestHeader("Content-length", envvars.length);
AjaxRequest.setRequestHeader("Connection", "close");
AjaxRequest.send(envvars);
}
function aCallback() {
if(AjaxRequest.readyState == 4){
var response = AjaxRequest.responseText;
if(response == 0){
// It is useless to test for failure here because a complete 404 page is returned,
// instead of a null or -1 response.
document.ajax.response.value="Fail";
} else {
document.ajax.response.value=response;
}
}
}
// handler.php:
if ($_POST["request"]=="countbananas"):
echo "bananas=43" ;
endif;
ps jQueryが言及されることは知っていますが、そのルートは避けたいと思います。