2012-09-05 62 views
-1

在我的插件中,我總是使用新的XMLHttpRequest(),它的工作完美。 現在所有請求ajax停止工作。XMLHttpRequest()在最新版本的Firefox中不起作用?

目前新的XMLHttpRequest()導致以下錯誤:的ReferenceError:XMLHttpRequest的是沒有定義

所以我改變了我的代碼:

try { 
    var XMLHttpRequest; 
    if (typeof(XMLHttpRequest) == "undefined") 
     XMLHttpRequest = content.XMLHttpRequest; 
} 
catch (e) { 
    alert(e); 
} 
var xmlhttp = new XMLHttpRequest(); 
... 

有時請求通常工作,但有時不是。

代碼「alert(e);」永遠不會被執行,那麼就沒有錯誤。

我不明白爲什麼有時它有效,有時不。 以前我只用var xmlhttp = new XMLHttpRequest();並始終工作。

現在我該如何創建一個新的ajax請求?

+0

是的,當然* * XHR工作。問:在放入「var XMLHttpRequest」之前,你的(失敗的)代碼看起來像什麼?問:你是否做了與[this]不同的任何事情(https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest?redirectlocale=en-US&redirectslug=XMLHttpRequest)?問:什麼版本的Firefox在你身上失敗?什麼版本最後爲你工作? – paulsm4

+5

PS:我會*不*給您的變量命名爲「XMLHttpRequest」;)嘗試「xhr」或類似的東西;) – paulsm4

+0

@ paulsm4 - 您可能希望將其作爲答案。 –

回答

1

正如我在評論中所說的,當您在瀏覽器窗口的上下文中運行時(如通過覆蓋到該窗口的代碼加載代碼),那麼XMLHttpRequest肯定應該可用。我證實了這一點,以防萬一,併爲我工作。

但如果一切都失敗了,你仍然可以實例對應的XMLHttpRequest直接XPCOM組件:

var xmlhttp = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"] 
         .createInstance(Components.interfaces.nsIXMLHttpRequest); 
xmlhttp.open(...); 
+0

謝謝。 我會嘗試找到導致XMLHttpRequest不可用的原因。 但是如果我沒有找到它,我會按照你的建議,直接實例化對應於XMLHttpRequest的XPCOM組件。 –

相關問題