jQuery 用 ajax 检测文件是否存在,不应出现的报错

2020-05-03 22:08:48 +08:00
 Eltrac

最近尝试用 jQuery 的 ajax,通过判断状态码的方式来判断文件是否存在,但是当文件不存在的时候 jQuery 会报错,如下:

Failed to load resource: the server responded with a status of 404 (Not Found)

由于使用的 ajax,出错的地方在 jQuery,用到 ajax 请求文件的代码如下:

function isFileExist(url){
    if(url.length==0){
        return false;
    }
    var isExist=true;
    $.ajax(url, {
         type: 'get',
         async: false,
         timeout: 1000,
         success: function() {
         },
         error: function() {
           isExist = false;  
         }
    });
    return isExist;
}

检测文件是否存在的功能实现了,但是那条报错信息还是存在,虽然对功能没有影响,但是莫名其妙多出来一条报错对于我这个强迫症来说不太好受,请问有什么办法让他不报错吗?

尝试过 try catch,貌似不太行(←也有可能是我技术渣

2003 次点击
所在节点    JavaScript
8 条回复
jifengg
2020-05-03 23:07:49 +08:00
get 换成 head 试试?
lichdkimba
2020-05-04 01:37:00 +08:00
这样写真的可以么 ajax 是异步执行的吧
zhw2590582
2020-05-04 07:55:47 +08:00
现在浏览器还支持 async 为 false 吗
lff0305
2020-05-04 09:26:46 +08:00
猜测和 CORS 的 Preflight request 有关, 需要 server 支持
详细见
https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request
Eltrac
2020-05-04 13:41:26 +08:00
@jifengg 试了,控制台还是会报 404
Eltrac
2020-05-04 13:43:02 +08:00
@lichdkimba 我把异步关了啊
Eltrac
2020-05-04 13:47:23 +08:00
@lff0305 看了下,感觉应该不是,可能是因为 jQuery 用 ajax 请求文件时,状态码为 404 就会抛出错误
deepred
2020-05-04 18:48:29 +08:00
这报错是浏览器自己报的,和 jq 无法。你换个 firefox 看看,404 就不会在控制台报错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/668341

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX