2012-02-01 21 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