2012-07-17 50 views
1

我想使用javascript加载xml文件。我使用下面的代码来加载xml文件。下面的代码在同一个文件夹中加载xml文件。使用javascript在目录中加载xml文件

if (window.XMLHttpRequest) 
      {// code for IE7+, Firefox, Chrome, Opera, Safari 
       xmlhttp=new XMLHttpRequest(); 
      } 
      else 
      {// code for IE6, IE5 
       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.open("GET",'dineshkani.xml',false); 
      xmlhttp.send(); 
      xmlDocument=xmlhttp.responseText; 
      alert("loaded"); 

但我想加载xml文件在特定的位置,例如。 c:/xml/dineshkani.xml

如果我使用编码xmlhttp.open("GET",'c:/xml/dineshkani.xml',false);这样它不会加载xml文件。有没有加载xml文件的方法。

+0

您不能访问用户在正常情况下的文件系统。 – starbeamrainbowlabs 2012-07-17 17:01:33

回答

1

尽管有其名称,XMLHttpRequest可用于非HTTP请求。
下面应该工作

xmlhttp.open("GET",'file:///C:/xml/dineshkani.xml',false); 

结果状态为0表示成功,而不是200.这是因为文件和FTP方案不使用HTTP结果码。

编辑:但是,某些浏览器(包括谷歌浏览器)在默认情况下会禁用此功能。必须通过启用Chrome --allow-file-access才能启用。 所以,如果你正在寻找一个跨浏览器的解决方案,你应该把XML放在你的服务器目录中。

HTML5文件api不允许你访问整个文件系统,你会得到一个沙盒目录。 Link

参考:MDN Page

+0

我不认为ajax请求对'file:///'协议有效。 – starbeamrainbowlabs 2012-07-17 17:02:55

+0

我认为他们这样做:https://developer.mozilla.org/es/XMLHttpRequest/Usar_XMLHttpRequest#section_3 – 2012-07-17 17:04:42

+0

不知道。谢谢!它可能只在基本文件来自'file:///'时可能工作 – starbeamrainbowlabs 2012-07-17 17:13:31

0

不幸的是,你无法通过AJAX访问本地文件。

如果你愿意,你可以试试HTML5 file access API

+0

该API不完全符合OP的要求。请参阅[this](http://stackoverflow.com/a/2378239/759019) – 2012-07-17 17:22:33

+1

你是对的......另一种选择是设置页面,以便用户可以将XML上传到服务器,然后把它提供给网页......往返一次,但它可以工作。 – 2012-07-17 20:18:37

-1

我不认为它可以加载使用这个链接是为XML文件加载有用

Load xml

+1

伟大的链接!但它没有提到从本地文件系统加载xml。 – 2012-07-17 17:35:37