这是我的代码:
$.ajax({
url: 'xxx',
success: function(data)
{
if (data.trim() == '0')
{
//IF CODE
}
else
{
//ELSE CODE
}
}
});
此代码在我想要使用的任何地方都能正常工作,但在Firefox扩展的情况下无效。
我阅读了以下stackoverflow文章,但无济于事: Call to $.ajax from firefox extension not working和 Ajax In Firefox Plugin
也尝试使用xmlHTTPRequest,但结果相同。
答案 0 :(得分:5)
您应该使用addon sdk提供的request module。您只能在加载项脚本中调用和使用此模块,而不能在内容脚本中调用和使用此模块。
如果您需要从内容脚本执行ajax请求,请使用内容脚本和addon-script之间的通信。您可以找到文档here。
如果你愿意,我有一个example of code(我认为它很难阅读),但它可以帮助你。
答案 1 :(得分:1)
为了防止未来的其他人,我想为ajax Request分享一个简单的包装器。在大多数情况下,可以将相同的jQuery Ajax配置传递给函数。 (但这不是一个完整的转换)。
function sendAjax(ajaxConfig) {
var request = Request({
url: ajaxConfig.url,
contentType: ajaxConfig.contentType,
content: ajaxConfig.data,
headers: ajaxConfig.headers,
onComplete: function(response){
var data = response.json;
if(!data)
data = response.text;
//console.log("Ajax complete", response.status, ajaxConfig.url, response.text);
if(ajaxConfig.complete){
ajaxConfig.complete(data);
}
if(response.status >= 400){ //got error
if(ajaxConfig.error){
//console.log("Ajax error", response.status, ajaxConfig.url, response.text);
ajaxConfig.error(data);
}
}
else{ //success
if(ajaxConfig.success){
//console.log("Ajax success", ajaxConfig.url, response.text);
ajaxConfig.success(data);
}
}
}
});
switch(ajaxConfig.type){
case "POST":
request.post();
break;
case "PUT":
request.put();
case "DELETE":
request.delete();
default:
request.get();
}
}
答案 2 :(得分:0)
在manifest.json中,您应该将url添加到权限中: 例如:
"permissions": [
"tabs",
"webRequest",
"webRequestBlocking",
"activeTab",
"*://xxx/*"
],