我尝试使用此工具http://www.extensionfactory.com/labs/conversion/将Chrome扩展程序转换为Firefox,除了AJAX调用外,它的效果很好。每次我从Firefox扩展程序进行AJAX调用时,都会收到此错误(在Chrome中运行正常):
[Exception ...“组件返回失败代码:0x80004005 (NS_ERROR_FAILURE)[nsIXMLHttpRequest.send]“nsresult:”0x80004005 (NS_ERROR_FAILURE)“位置:”JS框架:: 资源://nfglncbjnghpllgmelioileejdnldcgm-api-utils-lib/securable-module.js - >资源://nfglncbjnghpllgmelioileejdnldcgm-api-utils-lib/content/content-proxy.js :: ::第97行“数据:否]
这是content_script(chrome扩展名)中的AJAX调用:
var dataString='original_url='+imgsrc+'&filename='+filename+'&crop_x='+selX+'&crop_y='+selY+'&crop_h='+selH+'&crop_w='+selW;
$.ajax({
type: "GET",
url: "http://www.[website.com]/crop",
data: dataString,
async:false,
success: function() {
alert('Image successfully added!');
iframe.src = iframe.src;
} ,
error:function(){
$.ajax({
type: "GET",
url: "http://[www.website.com]/loggedin",
success: function() {
alert('An error occured when uploading image to server! Please try again.');
} ,
error:function(){
alert('You are not logged in! Please login.');
window.open('http://[www.website.com]/login');
}
});
}
});
我跟踪了错误,没有找到任何内容,没有任何相关内容,我无法从Firebug获取更多详细信息。我还验证了网站地址和服务器代码,一切都很好,它只适用于Firefox。
我认为Firefox Extension API对AJAX请求有一些限制,但我不知道该说什么,因为我在互联网上找不到任何东西。
也许你知道这里发生了什么......
答案 0 :(得分:0)
有多种方法可以制作Firefox扩展程序,因此很难给出详细的答案,但我会说,如果您尝试从扩展程序沙箱环境中进行网络调用,则会收到您收到的错误消息,因为他们不允许这样做。
如果可以,请使用可在此处找到的最新SDK: https://addons.mozilla.org/en-US/developers/docs/sdk/latest/
你会注意到他们的api中有一个名为“request”的类,它正是你想要的。在这里能找到它: https://addons.mozilla.org/en-US/developers/docs/sdk/1.4/packages/addon-kit/docs/request.html
有一点需要注意,如果您使用最新的SDK(撰写本文时为1.4),则与4之前的Firefox版本不兼容。