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的代码可能不正确,但在我开始处理文档之前发出警报也没有弹出,这告诉我由于某种原因它根本没有进入函数。
答案 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);
});