使用AJAX无需扩展即可访问文件

时间:2014-05-08 19:01:31

标签: javascript html

我想使用AJAX在没有扩展名的服务器中获取文件的内容。代码的简单演示如下:

<html>
<head>
<script>

function read_my_file(){

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

xmlhttp.onreadystatechange=function()
   {
   if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
   document.getElementById ("myDiv").innerHTML=xmlhttp.responseText;
     }
}

xmlhttp.open("GET","MYFILE",true);// MYFILE HAS NO EXTENSION
xmlhttp.send();

}
</script>

</head>

<body>

<h2>THIS FETCHES DATA FROM SERVER IF WORKS!!!!!!</h2>
<button type="button" onclick="read_my_file()">Request data</button>
<div id="myDiv"></div>

</body>

</html>

由于文件MYFILE没有扩展名,我认为它被解释为文件夹名称,我收到404错误。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果克里斯的答案不起作用,您还可以尝试指定您的页面应使用的mime类型:

xmlHttp.overrideMimeType("application/xml");

xmlHttp.setRequestHeader("Accept", "text/html");

并简单地将“application / xml”或“text / html”替换为您需要的类型。

答案 1 :(得分:0)

如果要直接加载文件,它必须位于Web服务器的文档根目录中。也就是说,如果文档根目录是/var/www/example.com/public,那么您可以访问以下文件:

  • /var/www/example.com/public/json/myfile.json
    • xmlhttp.open("GET","json/myfile.json",true);
    • xmlhttp.open("GET","http://www.example.com/json/myfile.json",true);

但是,如果文件位于/var/files/json/myfile.json,则无法访问它,因为它位于文档根目录之外!您必须使用服务器端语言(例如PHP)来读取文件。