V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
Eltrac
V2EX  ›  JavaScript

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

  •  
  •   Eltrac · 2020-05-03 22:08:48 +08:00 · 2168 次点击
    这是一个创建于 1666 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近尝试用 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,貌似不太行(←也有可能是我技术渣

    8 条回复    2020-05-04 18:48:29 +08:00
    jifengg
        1
    jifengg  
       2020-05-03 23:07:49 +08:00
    get 换成 head 试试?
    lichdkimba
        2
    lichdkimba  
       2020-05-04 01:37:00 +08:00 via iPhone
    这样写真的可以么 ajax 是异步执行的吧
    zhw2590582
        3
    zhw2590582  
       2020-05-04 07:55:47 +08:00
    现在浏览器还支持 async 为 false 吗
    lff0305
        4
    lff0305  
       2020-05-04 09:26:46 +08:00
    猜测和 CORS 的 Preflight request 有关, 需要 server 支持
    详细见
    https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request
    Eltrac
        5
    Eltrac  
    OP
       2020-05-04 13:41:26 +08:00
    @jifengg 试了,控制台还是会报 404
    Eltrac
        6
    Eltrac  
    OP
       2020-05-04 13:43:02 +08:00
    @lichdkimba 我把异步关了啊
    Eltrac
        7
    Eltrac  
    OP
       2020-05-04 13:47:23 +08:00
    @lff0305 看了下,感觉应该不是,可能是因为 jQuery 用 ajax 请求文件时,状态码为 404 就会抛出错误
    deepred
        8
    deepred  
       2020-05-04 18:48:29 +08:00   ❤️ 1
    这报错是浏览器自己报的,和 jq 无法。你换个 firefox 看看,404 就不会在控制台报错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5544 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:29 · PVG 17:29 · LAX 01:29 · JFK 04:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.