这是我从网站访问 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
我知道这是跨域请求,但是我该如何修复它?
谢谢
最佳答案
使用 XML,真正跨域请求的唯一真正选择是该服务器是否支持 CORS ,允许您的来源,并且您的浏览器支持它。 (不过,如果他们有 JSONP 选项,那就更容易了。不过,遗憾的是,快速浏览一下他们的 API 页面表明他们只支持 XML 和 JSON,而不支持 JSONP。但是你自己看看,不要相信我的话为此,我没有详细阅读。在我看来,如果他们支持 JSON 但不支持 JSONP,那就有点奇怪了。)
我有时听到讨论但已经做过的另一个选项是使用 YQL作为cross-domain proxy .
当然,您也可以运行自己的服务器,向它发出请求,让它查询 rxnav.nlm.nih.gov feed 并将其返回给您。那么 SOP 就不会出现在其中。
旁注:要在 IE8 或 IE9 中将 CORS 与 jQuery 一起使用,您需要一个插件来处理使用特殊的 XDomainRequest
对象(IE8 和 IE9 的 XMLHttpRequest
对象不不做 CORS)。 IE10 终于解决了这个问题。
关于jquery - jquery ajax跨域xml响应问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14560468/