Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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_File - Fatal编程技术网

如何使用JavaScript检查文件是否存在?

如何使用JavaScript检查文件是否存在?,javascript,file,Javascript,File,如何使用JavaScript检查文件(在本例中我要检查的是xml文件)的存在性?如果文件位于为包含JavaScript的页面提供服务的同一主机上,您可以尝试请求并验证返回的状态代码: function checkFile(fileUrl) { var xmlHttpReq = false; var self = this; // Mozilla/Safari if (window.XMLHttpRequest) { self.xmlHttpReq

如何使用JavaScript检查文件(在本例中我要检查的是xml文件)的存在性?

如果文件位于为包含JavaScript的页面提供服务的同一主机上,您可以尝试请求并验证返回的状态代码:

function checkFile(fileUrl) {
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }

    self.xmlHttpReq.open('HEAD', fileUrl, true);
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            if (self.xmlHttpReq.status == 200) {
                alert('the file exists');
            } else if (self.xmlHttpReq.status == 404) {
                alert('the file does not exist');
            }
        }
    }
    self.xmlHttpReq.send();
}

checkFile('/somefile.xml');

Javascript实际上没有任何文件处理功能。最好的办法是检查服务器端并将一些上下文发送回客户端

如果您想变得超级黑客,可以调用
xmlHttpRequest
(如果您使用jQuery,请查看
$.ajax
函数)

调用$.ajax后,您可以使用成功/错误处理程序来确定要执行的操作。如果文件不存在,它应该抛出一个错误


当然,这不是推荐的方法。

如果使用jQuery,可以尝试加载文件

$.ajax({
  type: "GET",
  url: "/some.xml",
  success: function()
  { /** found! **/},
  error: function(xhr, status, error) {
    if(xhr.status==404)
      { /** not found! **/}
  }
});
如果您没有使用jQuery:

function ajaxRequest(){
 var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] 
 //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
 if (window.ActiveXObject){ 
  for (var i=0; i<activexmodes.length; i++){
   try{
    return new ActiveXObject(activexmodes[i])
   }
   catch(e){
    //suppress error
   }
  }
 }
 else if (window.XMLHttpRequest) // if Mozilla, Safari etc
  return new XMLHttpRequest()
 else
  return false
}

var myrequest=new ajaxRequest()
myrequest.onreadystatechange=function(){
 if (myrequest.readyState==4){ //if request has completed
  if (myrequest.status==200 || window.location.href.indexOf("http")==-1){ 
    // FOUND!
  }
 }
}

myrequest.open('GET', 'http://blabla.com/somefile.xml', true); 
函数ajaxRequest(){
var activexmodes=[“Msxml2.XMLHTTP”,“Microsoft.XMLHTTP”]
//首先在IE中测试对ActiveXObject的支持(因为IE7中的XMLHttpRequest被破坏)
如果(window.ActiveXObject){

对于(var i=0;i我没有足够的声誉来发表评论,所以请注意,在Anwar Chandra的回答(非jQuery版本)中,您最终必须致电:

myrequest.send();

另外,HEAD方法最好是“检查文件是否存在”,因为您不需要从服务器读取整个文件。

the“#somehiddenplace”在jquery中并不真正需要,您可以只使用$.get、$.post或$.Ajax而不做不必要的标记。您可能没有发表评论的声誉,但您可以编辑“Anwar Chandra”的答案。改进答案并放入适当的编辑摘要。在3位审阅者批准该建议后,您可以获得+2个代表。