我尝试在HTML文件的脚本标记中执行此操作,只是为了看看我是否可以以某种方式使其工作:
<script>
var file = '/Users/amills001c/suman/test/output/test1.txt';
$.get(file);
</script>
我收到了错误,正如所料:
XMLHttpRequest无法加载 文件:///Users/amills001c/suman/test/output/test1.txt。 交叉源请求仅支持协议方案:http, 数据,chrome,chrome-extension,https,chrome-extension-resource。
所以我的问题是,有没有办法使用AJAX从本地文件系统请求文件而没有Web服务器?
似乎可能,但听起来我需要做一些配置。这仅适用于本地文件并在本地工作站上运行浏览器。
答案 0 :(得分:0)
如果您也从文件中运行主页并启用浏览器以使用本地文件,则应该可以执行此操作。在chrome中有一个选项--allow-file-access-from-files
允许这样做。
答案 1 :(得分:0)
如果启用了ActiveX,Internet Explorer将加载本地文件。这在Windows 10中有效。
<html>
<head>
<script>
function readZeFile() {
try {
var oField = document.getElementById("z_file");
var oFS = new ActiveXObject("Scripting.FileSystemObject");
var oStream = oFS.OpenTextFile(oField.value, 1);
var sContents = oStream.readAll();
oStream.Close();
document.getElementById("BoxFileContents").innerHTML = sContents;
} catch (e) {
window.alert(e);
}
}
</script>
</head>
<body>
<input type="file" name="z_file" id="z_file" size="50" />
<input type="button" onclick="readZeFile()" value="Read ze file" />
<pre id="BoxFileContents" style="border: 1px dotted black; height: 10em; width: 500; overflow: scroll; ">
[Nothing loaded]
</pre>
</body>
</html>
答案 2 :(得分:-1)
您说网络服务器因此我不确定您是否在问题中排除本地服务器。但是如果你使用node.js或python等运行localhost服务器,你确实可以使用AJAX加载文件,因为它是相同的源。
不像在Web浏览器中运行index.html那么方便,但这里是一个非常好的托管本地文件的准系统HTTP服务器。 https://www.npmjs.com/package/http-server
答案 3 :(得分:-4)
使用相对路径:
var file = 'suman/test/output/test1.txt';
$.get(file);