有没有办法只使用JavaScript从另一个域加载XML文件?

jQuery有$ .getJSON()函数,用于从其他域加载json文件,如下所示:

$.getJSON('http://somesite.com/file.js', function(output) { // do stuff with the json data }); 

我想知道我是否可以对来自其他域的xml文件做同样的事情,或者我是否必须使用服务器端语言?

这是我要加载的xml文档:

http://google.com/complete/search?output=toolbar&q=microsoft

我同意@viyancs,简单地说如果你想获得其他域的xml,有一个跨域限制,解决这个问题的方法是创建一个代理,所以请求过程是:

1.使用$ .ajax来请求您的代理(使用您想要访问的真实xmlurl)。

2.您的代理会检索xmlurl内容。

3.您的代理将内容返回到$ .ajax调用。

有关更多详细信息,请访问: http : //developer.yahoo.com/javascript/howto-proxy.html

顺便说一句:为什么你不必为JSON做这个? 这是一种名为JSONP的技术。

你可以试试这个

 $.ajax({ type: "GET", dataType: "xml", url:"localhost/grab.php", success: function(){ //to do when success } }); 

1)使服务作为代理从grab.php代码中的url示例获取内容:

  

?>

如果你真的没有能力使用具有缓存的代理(这是正确的礼仪),你可以使用像YQL这样的东西作为JSONP代理服务 。 没有API密钥,您最终会达到限制。

 // query: select * from xml where url='http://google.com/complete/search?output=toolbar&q=microsoft' var xml_url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D'http%3A%2F%2Fgoogle.com%2Fcomplete%2Fsearch%3Foutput%3Dtoolbar%26q%3Dmicrosoft'&diagnostics=true" $.get(xml_url,function(xml){ console.log(xml); });