使用jQuery从绝对路径的外部文件加载HTML

时间:2018-07-16 00:35:17

标签: javascript jquery html

我正在尝试将外部HTML文件的内容加载到当前的HTML模板中。

我遇到的问题是我要加载的内容不是本地的,并且不在URL上。该文件位于连接到VPN时可以访问的中央存储目录中。换句话说,如果我所有的本地文件都在/Users/username/...内,则此文件位于/central_directory/absolute/path/to/file.html

我可以在终端机上的/central_directory/absolute/path/to/file.html或浏览器中的file:///central_directory/absolute/path/to/file.html上访问文件。

但是,当我尝试使用jQuery .load()函数加载文件时,出现404 not found错误:

  

未找到:/central_directory/absolute/path/to/file.html

     

[15 / Jul / 2018 19:04:22]“获取/central_directory/absolute/path/to/file.html HTTP / 1.1”   404 2257

我的猜测是它没有在正确的位置查找文件(例如,它正在查找 http://mywebsite/central_directory/absolute/path/to/file.html),但我不知道这是一个准确的猜测还是测试方法。


代码:

这是我当前模板的head中的jQuery脚本:

<script>
    $(function(){
        var filename = "file:///central_directory/absolute/path/to/file.html"
        $("#includedContent").load(filename);
    });
</script>

和模板中的HTML:

<div id="includedContent"></div>

足够简单,对吧?

我还尝试了其他语法,但发生了相同的404错误。

1 个答案:

答案 0 :(得分:4)

问题是.load() 需要一个javascript的HTTP连接(因此是一个GETPOST请求)。

这是一个幸运的结果,因为您无法以与浏览器或终端中的file://路径相同的方式加载javascript资源(“幸运”,因为它阻止任何人访问您计算机上的任何文件。

解决此问题的唯一真正方法是通过Web服务器将本地文件代理到浏览器(因此您需要控制服务器的实现)。如果您有一个现有的Web服务器堆栈(例如PHPNode.jsRuby等),则很可能会这样做,但这最终取决于它是什么。