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

有没有办法只使用JavaScript从另一个域加载XML文件?,javascript,jquery,xml,json,Javascript,Jquery,Xml,Json,jQuery具有$.getJSON()函数,我使用该函数从其他域加载json文件,如下所示: $.getJSON('http://somesite.com/file.js', function(output) { // do stuff with the json data }); 我想知道我是否可以对来自其他域的xml文件执行相同的操作,或者我是否必须使用服务器端语言来执行此操作 这是我要加载的xml文档: 你可以试试这个 $.ajax({ type: "GET", da

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

$.getJSON('http://somesite.com/file.js', function(output) {
   // do stuff with the json data
});
我想知道我是否可以对来自其他域的xml文件执行相同的操作,或者我是否必须使用服务器端语言来执行此操作

这是我要加载的xml文档:

你可以试试这个

$.ajax({
   type: "GET", 
   dataType: "xml", 
   url:"localhost/grab.php", 
   success: function(){
    //to do when success
   }
 });
1) 使服务作为代理从url获取内容 grab.php代码中的示例:

<?php
   $url = 'http://google.com/complete/search?output=toolbar&q=microsoft';
   $parsing = parse_url($url);
   $scheme =  $parsing[scheme];
   $baseurl = basename($url);
   $strbase =$baseurl;
   $finalUri = $scheme .'://' .$strbase;
   $handle = fopen($finalUri, "r",true);
    // If there is something, read and return
 if ($handle) {
  while (!feof($handle)) {
   $buffer = fgets($handle, 4096);
   echo $buffer;
  }
  fclose($handle);
 }

我同意@viyancs,简单地说,如果您想要获取其他域的xml,则存在跨域限制,解决此问题的方法是创建代理,因此请求过程是:

一,。使用$.ajax请求您的代理(使用您想要访问的真实xml url)

二,。您的代理检索xml url内容

三,。代理将内容返回给$.ajax调用

有关更多详细信息,请查看:


顺便说一句:为什么你不必为JSON这么做?这是一种称为.

的技术,如果您真的没有能力使用带有缓存的代理(这是一种适当的礼仪),您可以使用类似的方法。如果没有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); });

你的回答似乎太复杂了,为什么他需要创建一个服务?您的php代码似乎没有给他任何新信息?我正在使用grab.php修复跨域问题,因为如果他执行“$.ajax”({type:“GET”,dataType:“xml”,url:,success:function(){//to do when success}});”回答是禁止的,我只是给出解决方案,我得到同样的问题,这是我的工作。谢谢,我明白了,你正在使用自己的服务器作为代理。也许清楚地说明问题,解决方案可能比具体的代码更好——只是我的意见:)是的,我会更新代码使其更好。谢谢你的关注。:)如果你说的javascript是指在浏览器中运行的客户端javascript,那么不,由于浏览器中内置的同源策略限制,无法阻止类似的情况发生。