Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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是否可以在Http请求之前检查文件是否存在?_Javascript_Xmlhttprequest - Fatal编程技术网

Javascript是否可以在Http请求之前检查文件是否存在?

Javascript是否可以在Http请求之前检查文件是否存在?,javascript,xmlhttprequest,Javascript,Xmlhttprequest,我使用简单的AJAX和google调试,然后发现url不存在 代码非常简单: var http; if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari http=new XMLHttpRequest(); } else { http=new ActiveXObject("Microsoft.XMLHTTP"); } try { http.open("GET", 'http://'

我使用简单的AJAX和google调试,然后发现url不存在

代码非常简单:

var http;

if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
  http=new XMLHttpRequest();
} else {
  http=new ActiveXObject("Microsoft.XMLHTTP");
}

try {
  http.open("GET", 'http://'+ip+':5000/test.html', true);
  http.onreadystatechange = onRcvData;
  if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    http.send(null);
  } else {// code for IE6, IE5
    http.send();
  }
} catch(e) {
  http.abort();
}

function onRcvData() {
  if (http.readyState==4) {
    if (http.status==404) {

    } else if(http.status==200) {

    } else {

    }
  }
}
如果test.html文件存在就可以了。 当文件不存在时,错误将显示在零件中:

if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
  http.send(null);
} else { // code for IE6, IE5
  http.send();
}
因此,即使我使用onreadystatechange方法也无法防止错误

该文件位于我的网页旁边的目录中

那么我应该怎么做才能与httprequest结合呢

谢谢你的建议

加:

我使用了“Head”方法,但返回404。。。(无论jQuery插件/javascript如何)

如图所示:

我该怎么办

我发现的错误方向是否存在误导?

尝试此功能

function urlExists(testUrl) {
    var http = jQuery.ajax({
        type:"HEAD", //Not get
        url: testUrl,
        async: false
    })
    return http.status!=404;
}


//Usage
if(!urlExists('http://www.mysite.com/somefileOrImage.ext')) {
   alert('File not found');
}
头部

HEAD方法与GET相同,只是服务器不能 在响应中返回消息正文。包含的元信息 在HTTP中,响应头请求的头应该相同 响应GET请求而发送的信息。这种方法可以 用于获取由 请求而不传输实体体本身。这种方法是可行的 通常用于测试超文本链接的有效性、可访问性、, 以及最近的修改


阅读有关头部的信息

您可以使用此功能

function UrlExists(url)
{
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
      var http=new XMLHttpRequest();
    } 
    else {
      var http=new ActiveXObject("Microsoft.XMLHTTP");
    }

    http.open('HEAD', url, false);
    http.send();
    return http.status!=404;
}

您是在本地硬盘上尝试上述示例,还是该页面托管在服务器上并通过http协议运行。如果示例是从文件:///协议运行的,那么您将不会获得readyState,因为它在Linux服务器中,谢谢。我使用了此解决方案,但我建议在try-catch之间包含“http.send()”,以检查url是否不存在(我使用了一个文件,当文件不在作为参数传递的目录中时,我得到了一个javascript错误)
async:false
,Firefox版本30.0及更高版本以及最近/当前版本的Chrome中的同步操作因用户体验不佳而被弃用。尝试使用会导致失败/错误。应使用带有回调函数的
async:true
进行异步操作。
async:false
,Firefox 30.0及更高版本以及Chrome的最新/当前版本中的同步操作因用户体验不佳而被弃用。尝试使用会导致失败/错误。对于异步操作,应使用带回调函数的
async:true