2011-11-01 73 views
3

我的錯誤有什麼奇怪的是,它只發生在我已經鏈接到這篇文章的底部的Firefox擴展。我無法在任何其他設置中重現此錯誤。錯誤jsonp調用只從Firefox擴展

我有這樣的Ajax請求

$.ajax({ 
    type: "GET", 
    dataType: "jsonp", 
    url: url, 
    jsonpCallback: "JSONCallback", 
    data: {title:$("#txtTitle").val(), url:taburl}, 
    success: function(data, textStatus) { 
    if(data.code > 0) 
     { 
     $("#icon").removeClass().addClass('accept'); 
     } 
    else 
     { 
     $("#icon").removeClass().addClass('error'); 
     if(data.code == '-1') 
      alert('kunne ikke finde din ønskeseddel på e-ønsker.dk - besøg e-ønsker.dk, og prøv derefter igen'); 
     } 
    }, 
    error: function(xhr, textStatus, errorThrown) { 
    alert("XMLHttpRequest="+xhr.responseText+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown); 
    $("#icon").removeClass().addClass('error'); 
    } 
}); 

服務器返回

JSONCallback({"code":405}); 

頭是application/json

所以爲什麼我得到一個parseError說JSONCallback不叫?我以爲jQuery應該爲我處理?

代碼爲http://builder.addons.mozilla.org/addon/1022928/latest和有問題的文件是data/panel.js

+0

該代碼實際上效果很好。你可以用jsfidlle測試它 - 這裏是我創建的小提琴來測試你的代碼:http://jsfiddle.net/eW6XR/也許服務器應該返回_參數? – zopieux

+0

@Zopieux - 我可以讓你嘗試一下這個擴展https://builder.addons.mozilla.org/addon/1022928/latest/然後告訴我是否(當你點擊「Gem」並且ajax調用被執行它適用於你? – Jakob

+0

我不能讓你的擴展工作,因爲你的服務器返回一個500:'

錯誤號碼:1048

列'uid'不能爲空

INSERT INTO'default_wishlist'('text','位置','uid','url')VALUES('some test',1,NULL,'http://tinyurl.com/36lneem')

' – zopieux

回答

2

問題是與window。解決這個問題最簡單的方法是編輯jQuery代碼(我知道,我討厭這樣做)使用unsafeWindow而不是window

+0

我不得不實際做一個搜索和替換,並將'window'的每個引用切換到'unsafeWindow'。 – gkoberger

+0

我正在編輯1.6.4用unsafeWindow替換窗口的每個實例,但是打破了我的jQuery代碼,說$沒有定義 – Jakob

+0

你有沒有對你修改的jQuery代碼的引用,也許我可以使用它? – Jakob

0

這是不是一個真正的答案,但你爲什麼要使用JSONP?在Firefox擴展的上下文中運行的代碼不受交叉源限制的約束。

我對jsonp的理解是,使用服務器的響應將腳本標記添加到文檔中,以便執行回調。在Firefox擴展中,「文檔」是XUL UI而不是常規頁面的文檔。我不確定向XUL添加腳本元素會導致瀏覽器執行該腳本。

希望這會有所幫助!

+0

如果我不使用JSONP,我得到一個域相關的錯誤。我的請求根本沒有打我的主機。有了這個JSONP,它確實擊中了我的主機,並且實際上得到了200響應,它永遠不會觸發。這可能是添加腳本標籤的問題,我只是不知道如何解決它。 – Jakob

1

你嘗試使用啓用「跨來源資源共享」

jQuery.support.cors = true;

我前一陣子有與Firefox相同的問題,使用該行讓我的Ajax調用固定前爲了我。

我coulnd讓你嘯出於某種原因工作:)好運氣

+0

謝謝 - 我嘗試過,但不幸的是它並沒有解決我的問題 – Jakob