Javascript:使用XMLHttpRequest获取少量数据,这些数据由网络服务器上的特定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,但我宁愿避开这条路线。
答案 0 :(得分:0)
您可以阅读status
property of the XMLHttpRequest
对象以获取HTTP响应代码:
function aCallback() {
if(AjaxRequest.readyState == 4){
if(AjaxRequest.status !== 200){
// something went wrong
document.ajax.response.value="Fail";
} else {
var response = AjaxRequest.responseText;
document.ajax.response.value=response;
}
}
}
这当然假定您的源代码正在返回正确的HTTP代码,例如“404 File not found”。
答案 1 :(得分:0)
你不能使用XMLHttpRequest返回的HTTP status code吗?
if ( AjaxRequest.status + "" == "404" ) {
// Error page
}
或者:
// 4xx status code
if ( (AjaxRequest.status + "").substr(0,1) == "4" ) {
// Error page
}