我想用我的ajax代码做的就是检查请求返回的HTML状态代码(用链接搜索404s)。我写了以下代码:
$.ajax({
url: link,
statusCode: {
404: function() {
alert("Not found");
},
200: function() {
alert("Found!");
}
}
});
其中“link”是指向其他网站上的图片网址的链接。我知道因为相同的原始策略我无法真正向其他网站发出请求,但是如果我想要检查的是返回状态,是否有一些例外?
答案 0 :(得分:1)
答案 1 :(得分:1)
当你尝试做你不应该做的事情时,我喜欢使用的一个策略是找到它已经适用于浏览器的地方,然后欺骗它为我工作。在跨域下载图像方面,浏览器已在<img>
标记中实现此功能。
图像标记支持加载的DOM事件,如果图像成功加载,您可以使用它来捕获。
缺点是您不会总是知道返回的图像是实际图像还是重定向图像,因为服务器配置为现在允许热链接图像。您也没有指示请求是否失败。
后者的缺点可以通过一个计时器来克服,虽然计时器不如您所希望的那样强大,但仍可能根据您的应用程序而有效。
这是一些示例(即未经测试的)代码我掀起来给你一个想法......
function isImagePathValid(src, callback) {
// Setup a timer to catch if it never loads
var fallback = setTimeout(function() {
callback(false);
}, 5000); // Wait 5 seconds
// Create a temp <img> tag and wait for it to load
$('<img style="position:absolute; top:-9999; left:-9999;" src="' + src + '" />')
.appendTo('body')
.load(function() {
clearTimeout(fallback);
callback(true);
});
}