6

诺比在这里。我正在编写一个需要从另一个域读取 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

我怎样才能解决这个问题?我需要使用代理吗?

4

3 回答 3

16

您不必编写自己的代理。如果你愿意,你可以使用 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检查console.log。

(公共 YQL API 的使用限制是每个 IP 每小时 2,000 个请求)

于 2013-08-16T18:44:21.307 回答
1

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

但是,通过一些服务器端编程,您可以创建一个代理并在您自己的域中加载数据,并将其输出为 XML。

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

于 2013-08-16T18:18:25.233 回答
1

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

于 2013-08-16T18:42:02.960 回答