JS:如何检查JS或AJAX中是否存在文件?

时间:2017-11-03 12:46:52

标签: javascript file validation

我想检查本地文件是否存在,如果不存在我想运行警报('文件不存在!')。 我试过这样的事情:

function isOnline() {
    var xmlPath = "/test/test/myfile.xml"
    var request=new XMLHttpRequest(); 

    request.open("GET",xmlPath,false);
    request.send();

    
    if (request.readyState === 4){
       return true; 
    }else{
        alert('File Away!');
       return false;
    }
}

但这不起作用。 我不能使用PHP或jquery。

1 个答案:

答案 0 :(得分:0)

如果您尝试从服务器获取资源,则意味着该文件应该可以通过URL公开访问。

当您使用XMLHttpRequest对象request.send()启动该请求时,该调用是异步的,因此立即检查readyStatestatus它将无法保证结束调用

function isOnline() {
    var xmlPath = "/test/test/myfile.xml"
    var request=new XMLHttpRequest(); 

    request.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
              alert("File was found on URL");
       }else if (this.readyState == 4 && this.status == 404 ) {
              alert("File away!");
       }
   };
    request.open("GET",xmlPath,false);
    request.send();
}

您应订阅状态更改事件并检查该更改的值。因此,除了检查readyState==4以获得更改到事务结束之外,您还应检查状态代码。例如200表示一切正常,或404表示未找到资源。

在此处检查该代码的规范: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html