jquery - jquery ajax跨域xml响应问题

标签 jquery ajax

这是我从网站访问 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/

相关文章:

javascript - 使用 AJAX 和 PHP 永久覆盖简单的点击计数

javascript - 使用 $_FILES 而不是字段名称的 codeigniter upload->do_upload()

javascript - CSS 规则未应用于动态生成的元素

javascript - 通过在 div 中使用 html 注释来显示/隐藏文本

asp.net - jquery 脚本删除

jquery - js扩展DataTables行是由行内的按钮触发的

php - jQuery - 将多维表单数据发送到 PHP 脚本

javascript - 从 PHP 脚本返回 JSON 对象

php - 如果在 Yii 中选中复选框,则弹出一个窗口

javascript - 从 json 中获取数据,例如使用 javascript 和 jquery 加载更多