我正在使用此代码加载文本文件的内容:
function go(){
//var myFile = "c:/BMCclient.log";
var myFile = "abc.html";
$.get( myFile, function(data) {
alert ( data );
$('#_content').html(data);
alert('Load was performed.');
});
}
当myFile = "abc.html";
此方法成功执行时,但我使用时
myFile = "c:/BMCclient.log";
然后抛出异常:
uncaught exception: [Exception... "Component returned failure code: 0x805e000a [nsIXMLHttpRequest.open]" nsresult: "0x805e000a (<unknown>)" location: "JS frame :: file:///C:/PIC/batch/personal/web/js/jquery/jquery-1.4.2.js :: anonymous :: line 5113" data: no]
为什么会这样?
答案 0 :(得分:4)
这几乎可以肯定是由于Same Origin Policy for file URLs(强调我的)的特定方面。
从Gecko 1.9开始,允许文件只读取某些其他文件。 具体来说,只有当原始文件的父目录是目标文件的祖先目录时,文件才能读取另一个文件。但是,无法以这种方式加载目录。
例如,如果你有一个访问另一个文件bar.html的文件foo.html,只有当bar.html与foo.html位于同一目录或者包含在同一目录中时,加载才会成功目录为foo.html。
答案 1 :(得分:1)
Ajax与本地文件系统不兼容,如果您设置了Web服务器,并且使用http://localhost
访问该站点,您会有更好的运气。
你很幸运HTML文件适合你 - 大多数浏览器都不允许这样做。
答案 2 :(得分:0)
这种情况正在发生,因为JavaScript无法从您计算机的文件系统访问文件。如果可能的话,那么JS脚本可以窃取你的文件数据而你甚至不知道它的设计就是这样工作。
答案 3 :(得分:0)
您无法通过使用文件系统解决文件来加载javascript中的文件。 $.get
是 HTTP GET请求,它将与服务器通信(例如,在localhost上)。