【发布时间】:2015-12-22 15:18:00
【问题描述】:
我正在尝试编写一个获取外部 url 的 JavaScript 函数,并尝试在“tmOut”毫秒内验证它的存在。如果在这个时间范围内得到验证,它应该以这个 url 作为参数调用一个“回调”函数。
这里是函数:
function chkUrl(url, tmOut, callback) {
var abortChk = false;
var abortTmr = setTimeout(function(){abortChk = true;}, tmOut);
var x = new XMLHttpRequest();
x.onreadystatechange = function() {
if (x.readyState == 4) {
if (x.status < 400 && !abortChk) {
clearTimeout(abortTmr);
callback(url);
}
}
};
x.open('GET', url, true);
x.send(null);
}
问题是由于跨域调用(可能)我得到 x.status=0 而不管 url 是否存在。
有没有办法克服/解决该问题(用户无需修改任何默认浏览器设置)?或者,有没有其他方法可以实现相同的功能?
这个函数是“可重入的”吗? (我可以一次安全地为不同的网址调用几次吗?)
【问题讨论】:
标签: javascript ajax xmlhttprequest cross-domain http-response-codes