跨域AJAX读取XML

Cross-Domain AJAX to Read XML

本文关键字:XML 读取 AJAX 跨域      更新时间:2023-09-26

这里没有。我正在编写一个客户端脚本,该脚本需要从另一个域读取XML文件。我试过使用JSONP。我得到了200的响应,但由于某种原因,客户端无法访问返回的数据。我有两个错误:

Resource interpreted as Script but transferred with MIME type text/xml

Uncaught SyntaxError: Unexpected token <

以下是代码(我已经删除了XML url,因为它是机密的):

$(document).ready(function() {
  $.getJSON("urlOfFilecallback=?", function(data) {
  console.log(data)
 })
});

当我试图在控制台中呈现数据时,我得到:

ReferenceError: data is not defined

我该怎么解决这个问题?我需要使用代理吗?

您不必编写自己的代理。如果你想的话,你可以使用YQL。这里有一个例子如何:

//sample site that returns xml
site = 'http://goo.gl/9iQWyG';

var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from xml where url="' + site + '"') + '&format=xml&callback=?';
// Request that YSQL string, and run a callback function.
// Pass a defined function to prevent cache-busting.
$.getJSON(yql, function(data){
    console.log(data.results[0]);
});

这是jsfiddle-check-console.log.

(公共YQL API的使用限制为每个IP 2000个请求/小时)

XML默认情况下不允许用于跨域请求。

但是,只需少量的服务器端编程,就可以创建一个代理,在自己的域中加载数据,并将其输出为XML。

有关更多信息,请参阅此问题

如果您可以访问另一个域端,您也可以使用这种方法跨域请求