下面是我从网站访问xml的代码
$(document).ready(function () {
$.ajax({
type: "GET",
url: "http://rxnav.nlm.nih.gov/REST/Ndfrt/search?conceptName=TESTOSTERONE",
dataType: "xml",
success: xmlParser
});
});
function xmlParser(xml) {
$(xml).find("entry").each(function () {
$(".entirecont").append($(this).find('inputConceptName').text());
});
}它在本地运行得很好,当我将这段代码推送到生产环境中时,它给了我跨域限制。
这是JsFiddle
我知道这是一个跨域请求,但是,我如何解决它??
谢谢
发布于 2013-01-28 18:57:49
使用XML,真正的跨域请求的唯一选择是该服务器支持CORS,允许您的源,并且您的浏览器支持它。(不过,如果他们有一个JSONP选项,那就更容易了。遗憾的是,快速浏览一下他们的API页面就会发现,他们只支持XML和JSON,而不支持JSONP。但是你自己看,别相信我的话,我没有仔细读过。在我看来,如果它们支持JSON而不支持JSONP,那就有点奇怪了。)
我有时听人讨论过的另一种选择是使用YQL作为cross-domain proxy。
当然,您也可以运行自己的服务器,向它发出请求,让它查询rxnav.nlm.nih.gov提要并将其返回给您。那么SOP就不会出现在里面了。
附注:要在IE8或IE9中将CORS与jQuery一起使用,您需要一个使用特殊XDomainRequest对象处理的插件(IE8和IE9中的XMLHttpRequest对象不做CORS)。IE10最终解决了这个问题。
发布于 2013-01-28 18:57:41
跨域请求只能使用CORS或JSONP。获取XML的AJAX请求不能跨域工作
解决方法是使用PHP/ASP.NET/选择的语言在本地服务器上创建一个服务器端代理,然后通过AJAX调用它。
发布于 2013-01-28 18:57:54
不能通过ajax进行跨域请求(json除外)。
我建议你发出本地ajax请求,并在服务器端连接到跨域服务器来获取你需要的数据。
https://stackoverflow.com/questions/14560468
复制相似问题