jQuery:检查图像是否存在
我正在通过jQuery $ .ajax加载图像path,并显示图像之前,我想检查它是否存在。 我可以使用图像加载/就绪事件或类似的东西来确定文件path是有效的吗?
.myimage设置为显示:无,我希望能做类似的事情
$(".myimage").attr("src", imagePath); $(".myimage").load(function() { $(this).show(); });
有这样的可能吗?
那么,你可以绑定.error()
处理程序…
喜欢这个,
$(".myimage").error(function(){ $(this).hide(); });
那么,你的加载事件已经可以了
$(".myimage").load(function() { $(this).show(); });
这个问题是,如果JavaScript被禁用的形象将永远不会显示…
尝试:
function urlExists(testUrl) { var http = jQuery.ajax({ type:"HEAD", url: testUrl, async: false }) return http.status; // this will return 200 on success, and 0 or negative value on error }
然后使用
if(urlExists('urlToImgOrAnything') == 200) { // success } else { // error }
我知道一个古老的线索,但我认为它可以改进。 我注意到OP有间歇性的问题,这可能是由于加载的图像和错误检查同时。 最好先载入图像,然后检查错误:
$(".myimage").attr("src", imagePath).error(function() { // do something });
既然你已经在做一个AJAX请求,我将把它卸载到支持你的AJAX的服务器端应用程序。 检查服务器是否存在文件是很简单的,您可以在发回的数据中设置variables来指定结果。
这个问题已经有几年了,但是对于任何正在查看这个问题的人来说,这个error handling程序都是一个更好的示例用法。
$("img") .error(function(){ $(this).hide(); }) .attr("src", "image.png");
在尝试加载图像以捕捉事件之前,您需要附加error handling程序。
资料来源: http : //api.jquery.com/error/
这就是我所做的:
$.get( 'url/image', function(res){ //Sometimes has a redirect to not found url //Or just detect first the content result and get the a keyword for 'indexof' if ( res.indexOf( 'DOCTYPE' ) !== -1 ) { //not exists } else { //exists } });