对于 URL 的异步快速检查,我使用带有 method=HEAD 的 AJAX:
function ajax_quickresponse(url) {
var xmlhttp = null;
if (window.XMLHttpRequest)
xmlhttp = new XMLHttpRequest();
else if (window.ActiveXObject)
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
if (xmlhttp) {
xmlhttp.open("HEAD", url, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
if ((xmlhttp.status > 199 && xmlhttp.status < 400))
; //OK
else
; //ERR
};
};
xmlhttp.send(null);
};
};
此接收足以检查 http 状态,但似乎在服务器端(url)中止脚本。例如,我可以尝试使用一个简单的 php 脚本 (url="http://my-host.er/test/script.php") 来实现 sleep(2); 并在之后记录成功消息。使用xmlhttp.open("HEAD", url, true);
,日志中没有成功条目。
使用xmlhttp.open("GET", url, true);
,日志中有一个成功条目。
但是,使用 GET/POST,javascript 等待 2 秒而不是立即(使用 HEAD)。
状态是立即知道的,javascript 不需要等待最终响应。
如何利用这两种方法?首先,我需要立即获得状态,只要标头进入,并且在外部 url/脚本返回后,我想要另一个侦听器。
例如,首先alert('http status='+xmlhttp.status);
可能会延迟,具体取决于 url/脚本, alert('finally completed');
您是否有提示如何通过一个电话来实现这一目标?