Cross-Domain AJAX to Read XML

2019-03-28 13:04发布

Noobie here. I'm writing a client script that needs to read an XML file from another domain. I tried using JSONP. I get a 200 response but the client can't access the returned data for some reason. I get two errors:

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

and

Uncaught SyntaxError: Unexpected token <

Here's the code (I've removed the XML url since it's confidential):

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

When I try to render the data in the console I get:

ReferenceError: data is not defined

How can I fix this? Do I need to use a proxy?

3条回答
女痞
2楼-- · 2019-03-28 13:18

You don't have to write your own proxy. You can use YQL if you want to here is an example how:

//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]);
});

here is the jsfiddle check console.log.

(Usage limits of the public YQL API is 2,000 requests/hour per IP)

查看更多
做自己的国王
3楼-- · 2019-03-28 13:35

If you have access to the other domain side, you could also use this approach Cross Domain Request

查看更多
兄弟一词,经得起流年.
4楼-- · 2019-03-28 13:40

XML is not allowed for cross-domain requests by default.

However, with a little server-side programming you can create a proxy and load the data within your own domain, and output it as XML.

for more information see this Question

查看更多
登录 后发表回答