2012-02-01 67 views
0

我试图使用此工具http://www.extensionfactory.com/labs/conversion/将Chrome扩展转换为Firefox,除了AJAX调用外,它工作得很好。每次我让来自Firefox扩展AJAX调用,我得到这个错误(在Chrome中正常工作):Firefox扩展上的AJAX错误(从Chrome移植)

[异常...“组件返回故障代码: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 :: :: line 97“data:no]

这是AJAX调用i n个content_script(Chrome扩展):

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'); 
      } 
     }); 

    } 
}); 

我追查错误并没有被发现,没有什么相关的,我不能从萤火虫获取更多详情。我也验证了网站地址和服务器代码,一切都很好,但它不适用于Firefox。

我在想Firefox扩展API对AJAX请求有一些限制,但我不知道该说什么,因为我在Internet上找不到任何东西。

也许你知道这里发生了什么......

+0

的Firefox版本兼容你为什么用GET请求发送数据?虽然Firefox允许,但大多数服务器不会。 – 2012-02-01 07:32:13

+0

顺便说一句,重要的是要提到这是一个内容脚本 - 背景页面的转换是不同的,XMLHttpRequest应该在那里工作。 – 2012-02-01 07:43:23

+0

AJAX请求工作正常,我得到500错误,因为它没有发送服务器上所需的cookie数据,因为我正在使用会话。解决方案是让它发送像Chrome一样的cookie数据。 – 2012-02-01 08:16:51

回答

0

有很多种方法可以让Firefox扩展因此很难给你一个详细的答案,但我会说,你收到错误消息预计,如果您正尝试从扩展沙箱环境中进行网络调用,因为它们不允许它。

如果可以,用它可以在这里找到了他们最新的SDK: https://addons.mozilla.org/en-US/developers/docs/sdk/latest/

你会发现他们有一个叫他们的API,它不正是你想要的“请求”类。它可以在这里找到: https://addons.mozilla.org/en-US/developers/docs/sdk/1.4/packages/addon-kit/docs/request.html

有一点需要注意,如果你(在写这篇文章的时候1.4)使用他们最新的SDK是不与前4

+0

此转换服务显然是使用附加SDK 1.0创建附加组件,并且无法更改该附加组件。尽管使用了过时的SDK版本,但它们将附加组件标记为与“Firefox 99”兼容,这相当令人担忧。 – 2012-02-01 08:01:21

+0

感谢您的回答。我会尝试手动将其升级到最新的sdk,因为它看起来很麻烦。 – 2012-02-01 08:14:23