我目前正在研究一个项目,试图从我们的Intranet服务器上的XML文件更新页面读取。做了一些工作后,我想出了以下代码:
// IE7+
if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); }
// IE6, IE5
else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
xmlhttp.open("GET", "VerifiedUrl+XML.xml", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
if (xmlDoc.getElementsByTagName("CheckBox")[0].childNodes[0].nodeValue == "True"){
document.getElementById("PartToUpdate").innerHTML = xmlDoc.getElementsByTagName("TextBox")[0].childNodes[0].nodeValue;
}
现在我已经在我的localhost上测试了这个代码,它确实从正确的文件读取,显示更新的信息,但是当我将其部署到Intranet时,我收到“无效的参数”错误。 (XML文件本身已经部署并正确引用)。
编辑:我最近发现了这个问题,因为我所引用的路径显然无法找到该文件本身。因此,这提出了另一个人可能能够阐明的问题:
//When referencing a file within the same folder, it works correctly.
xmlhttp.open("GET", "Sample.xml", false);
//However, if I include the full path, it doesn't read correctly. (Double slashes to escape correctly)
xmlhttp.open("GET", "\\\\Full\\Server\\Path\\Here\\Sample.xml", false);
也许有人可以对此有所了解?
答案 0 :(得分:1)
你的道路应该是这样的:
xmlhttp.open("GET","./Path/Here/books.xml", false); //for relative urls
xmlhttp.open("GET","http://localhost/Path/Here/books.xml", false); //for absolute urls
如果是非http同步请求
var request = new XMLHttpRequest();
request.open('GET', 'file:///home/user/file.json', false);
它与您的系统路径不相似。
答案 1 :(得分:0)
您检查了same-origin policy吗?
答案 2 :(得分:0)
这里的路径错了:
xmlhttp.open("GET", "\\\\Full\\Server\\Path\\Here\\Sample.xml", false);
您在互联网上使用了错误的斜杠类型,它们在文件系统上是正确的。它需要使用正斜杠。
xmlhttp.open("GET", "//Full/Server/Path/Here/Sample.xml", false);