我有这个网址,我需要将其格式化为XML并解析它。
var url = 'http://www.omnyads.com/xml.php?query=education&username=user2&ip=24.102.160.176&limit=3&ua=Mozilla&ref= http://www.omnyads.com/filter.php'
;
$.ajax({
type: 'GET',
dataType: 'jsonp',
jsonp: 'jsonp_callback',
url: url,
success: function(data) {
},
error: function(data) {
},
});
Ajax将这个XML返回给我:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<general>
... ... ..
</general>
我得到这个语法错误:Uncaught SyntaxError:Unexpected token&lt;来自&#34; <?xml version="1.0" encoding="ISO-8859-1" ?>
&#34;我无法解析我的XML。
其他的事情..如果我不使用dataType:jsonp我收到此错误消息:
XMLHttpRequest无法加载http://www.omnyads.com/xml.php?query=institutions&username=user2&ip=24.102.160.176&limit=3&ua=Mozilla&ref=%20http://www.omnyads.com/filter.php。 No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上。 Origin&#39; examplesite.com&#39;因此不允许访问。
提前致谢。
答案 0 :(得分:0)
您希望从服务器接收XML响应,但您还要指定dataType是jsonp。所以,很明显,如果它想要JSONP,它将无法解析响应。 dataType必须是&#39; xml&#39;。
至于您设法解决的其他问题。通过黑客攻击代码,No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'examplesite.com' is therefore not allowed access.
意味着您不能从其他域访问该API。很简单吧?这就是它所说的内容以及它的含义。
JSONP旨在解决此安全功能,但它仅适用于旨在返回JSONP数据的API。只要你愿意,你就不能随便打开它。
以下是有关Same Origin policy
的更多信息如果您对该外部API有任何控制权(并且我打赌您没有),您可以要求他们添加Access-Control-Allow-Origin
标题,该标题将授予您的域名/用于从其他域访问API的IP。