2014-01-28 135 views
3

我想请求一个远程XML文件。我读过JSONP是唯一不用编写服务器端代码就可以做到这一点的方法。我尝试使用下面的代码JSONP意外令牌<

<html> 
<head> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
    <script> 
     $(document).ready(function(){ 
      $.ajax({ 
       url: 'http://www.w3schools.com/xml/note.xml', 
       dataType: 'jsonp', 
       success: function(dataWeGotViaJsonp){ 
        console.log(dataWeGotViaJsonp); 
       } 
      }); 
     }) 
    </script> 
</head> 
<body> 
</body> 
</html> 

我得到的错误,请求的XML文件:

资源解释为脚本,但使用MIME类型text/xml的转移:“http://www.w3schools.com/xml/note.xml?callback=jQuery1620008313672617077827_1390902958529&_=1390902958534”。 jquery.min.js:18 未捕获的语法错误:意外的代币<

任何帮助非常感谢。

回答

6

您可能试图通过JSONP获取数据来绕过同源策略。

但这也意味着您实际上需要获取JSONP,而不是XML。

但是,您不能只是将dataType更改为xml,因为您因上述政策而未被允许。

所以服务器需要支持JSONP输出。

解决方案:

你需要做一些服务器端代码,虽然。

您可以创建一个可以通过cUrl访问xml的serverside脚本,并将其转换为jsonp。

例如:

www.yourserver.com/xmltojson.php?url= http://www.w3schools.com/xml/note.xml

此脚本将转换成XML以JSON和你可以与你的Ajax调用得到它。 (因为这个转换自己的服务器上,不需要JSONP但经常JSON会做

编辑:

找到一个教程你:http://weedygarden.net/2011/01/consuming-remote-xml-as-jsonp/