Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript检查文件是否存在_Javascript_Jquery_Ajax_File_Exists - Fatal编程技术网

Javascript检查文件是否存在

Javascript检查文件是否存在,javascript,jquery,ajax,file,exists,Javascript,Jquery,Ajax,File,Exists,我试图使用以下代码确定javascript中是否存在图像: var image_url = 'http://www.tester.co.uk/shop/images/product_thumbs/t_' + prod.images.toLowerCase() + '.jpg'; $.ajax({ url: image_url, type:'HEAD', error: function

我试图使用以下代码确定javascript中是否存在图像:

var image_url = 'http://www.tester.co.uk/shop/images/product_thumbs/t_' + prod.images.toLowerCase() + '.jpg';

        $.ajax({
            url: image_url,
            type:'HEAD',
            error:
            function(msg_no){
                console.log("fail."); 
                markup += "<td class='movie-image'><img src='/shop/html_templates/files/images/default-category-image.gif'/></td>";
            },
            success:
            function(msg_yes){
                console.log("success."); 
                markup +=  "<td class='movie-image'><img src='/shop/images/product_thumbs/t_" + prod.images.toLowerCase() + ".jpg'/></td>";
            }
        });
var image\u url='1〕http://www.tester.co.uk/shop/images/product_thumbs/t_“+prod.images.toLowerCase()+”.jpg';
$.ajax({
url:image\u url,
类型:'头',
错误:
功能(消息编号){
console.log(“失败”);
标记+=“”;
},
成功:
功能(msg_yes){
console.log(“success”);
标记+=“”;
}
});
在404页面上,我的控制台日志显示失败消息,但是在返回200的页面上,我没有收到成功消息

我希望有人能告诉我哪里出了问题


通过查看您实际正在做的事情,您可能更明智的做法是不要通过
ajax
执行此操作,而是依赖图像,如果返回的数据不是(浏览器理解的)图像,则图像也会引发错误

var img = new Image();
img.onerror = function (msg_no) {
    console.log("fail."); 
    markup += "<td class='movie-image'><img src='/shop/html_templates/files/images/default-category-image.gif'/></td>";
}
img.onload = function (msg_yes) {
    console.log("success."); 
    markup +=  "<td class='movie-image'><img src='/shop/images/product_thumbs/t_" + prod.images.toLowerCase() + ".jpg'/></td>";
}
img.src = image_url; // fetch after listeners attached
var img=newimage();
img.onerror=功能(消息编号){
console.log(“失败”);
标记+=“”;
}
img.onload=函数(msg_yes){
console.log(“success”);
标记+=“”;
}
img.src=image_url;//附加侦听器后获取

通过查看您实际正在做的事情,您可能更明智的做法是不要通过
ajax
来实现这一点,而是依赖图像,如果返回的数据不是(浏览器可以理解的)图像,那么图像也会引发错误

var img = new Image();
img.onerror = function (msg_no) {
    console.log("fail."); 
    markup += "<td class='movie-image'><img src='/shop/html_templates/files/images/default-category-image.gif'/></td>";
}
img.onload = function (msg_yes) {
    console.log("success."); 
    markup +=  "<td class='movie-image'><img src='/shop/images/product_thumbs/t_" + prod.images.toLowerCase() + ".jpg'/></td>";
}
img.src = image_url; // fetch after listeners attached
var img=newimage();
img.onerror=功能(消息编号){
console.log(“失败”);
标记+=“”;
}
img.onload=函数(msg_yes){
console.log(“success”);
标记+=“”;
}
img.src=image_url;//附加侦听器后获取

当然,如果文件不存在且服务器返回
200
,则是服务器做错了Hi,不,图像不是跨域的。Hi,这是为了搜索功能,因此它一次返回多个请求,然后,对于不存在且无法显示的图像,它会显示一个404,在控制台中,它会显示我在上面输入的消息-“失败”-但如果图像确实存在,它会显示一个200,但不会进入我的成功功能并显示console.log(成功)类似的stackoverflow问题当然,如果文件不存在且服务器返回
200
,则是服务器做错了Hi,不,图像不是跨域的。Hi,这是为了搜索功能,因此它一次返回多个请求,然后,对于不存在且无法显示的图像,它会显示一个404。在控制台中,它会显示我在上面输入的消息-“失败”-但如果图像确实存在,它会显示一个200,但不会进入我的成功功能,并显示控制台。日志(成功)类似的堆栈溢出问题