来自Chrome扩展程序的jQuery AJAX调用问题

时间:2013-02-07 17:41:12

标签: jquery xml ajax google-chrome-extension

BLUF:从Chrome扩展程序运行AJAX调用无法正常运行。

AJAX:

$.ajax({
    type: "GET",
    url: "http://weather.aero/dataserver_current/httpparam?dataSource=metars&requestType=retrieve&format=xml&stationString=KFBG&hoursBeforeNow=1&fields=raw_text",
    dataType: "xml",
    success: function(xml){
        $(xml).find("raw_text").each(function(){
            var metar = $(this).text();
        });

        $("#ob-body").html(metar);
    }
});

所以我试图从需要GET请求数据XML的站点获取天气数据。它们提供了构建URL请求字符串的提示,并在粘贴地址栏中的URL后,正确显示相应的XML数据。

接下来,我组装了AJAX调用并运行它,但似乎没有任何事情发生。我将success属性的功能更改为'alert()'并再次运行扩展,并弹出警告框。

警报显示的事实意味着呼叫成功,除非我完全出去吃午饭......那么为什么原来的功能不起作用?我意识到搜索XML的代码可能不正确,但在我开始处理文档之前发出警报也没有弹出,这告诉我由于某种原因它根本没有进入函数。

2 个答案:

答案 0 :(得分:2)

这可能是因为AJAX请求的Same Origin Policy约束。 Chrome允许您在扩展程序中制作跨域ajax请求,但我们需要添加the document

中给出的扩展程序清单文件的权限

您可能需要向清单文件添加跨域访问权限,例如

{
  "name": "My extension",
  ...
  "permissions": [
    "http://weather.aero/"
  ],
  ...
}

答案 1 :(得分:0)

我认为你应该成功地做到这一点:

$(xml).find("raw_text").each(function(){
     var metar = $(this).text();
     $("#ob-body").html(metar);
});