2010-02-17 45 views
0

我有一個奇怪的問題,我不能'解決數小時後谷歌搜索。 我的web應用程序的構建方式並不是非常優化,但我現在無法對此做任何事情。ajax成功沒有在Firefox中觸發

我在C#中做了一個用戶控件。此用戶控件由iframe內的aspx頁面託管,並且此頁面再次位於框架內。 (不是最佳)。

但我認爲唯一重要的是外框。託管頁面位於另一個域上,而不是其他頁面/部分。

在這個框架內是我的代碼。我有一個jQuery腳本,當它檢測到服務器上的新數據時更新數據。 獲取我使用jquery-ajax的數據。

var indexURL = "/data/indexProxy.aspx"; 

__LOG("Lets get the XML"); 
$.ajax({ 
    url: indexURL, 
    type: 'GET', 
    dataType: 'xml', 
    contentType: "text/xml; charset=\"utf-8\"", 
    error: function(request, error) { 
     alert('Error loading XML document' + request + error); 
    }, 
    success: function(xml) { 
     __LOG("ajax success..."); 
     OnSucceededXml(xml); 
    } 
}); 

__LOG函數只寫入螢火蟲控制檯。

所以這段代碼運行很好,直到發生事情。不太確定它是如何發生的,但有時候當函數失敗或被破壞時,它會停止工作。我認爲這與ajax函數內的頁面重新加載有關。

發生這種情況後,成功功能永遠不會被觸發。在firebug consule中,我可以看到「讓我們獲取XML」消息,我可以看到ajax-call是觸發器並返回200或304(未修改)。但是__LOG裏面的成功並沒有觸發也沒有功能。

要使其再次工作,我必須完全重新啓動Firefox,有時清空緩存。

如果我打開的是其他DOMIAN的框架內,外架的頁面,再次一切工作,但我真的不能這樣做,因爲應用程序的應有的作用。

任何人都經歷過類似的事情?另外我不會把這個問題歸咎於jquery,因爲我已經在舊腳本中陳述了一些模仿的東西。

感謝

恩德雷

+0

您是否嘗試過其他瀏覽器,其效果如何? – 2010-02-17 12:04:09

+0

我只嘗試過Firefox和IE。它從來沒有發生在IE中,只是Firefox。 – Endre 2010-02-18 09:13:35

回答

0

這可能是由於這樣的事實,你正在做在Firefox跨域請求,我相信是Firefox的默認策略禁止。顯然你可以tweak the setting,但面向互聯網的網站,我不認爲這會飛,你將不得不尋找另一種方式。

你是否在Firebug中跟蹤控制檯窗口的輸出?

+0

它可能與跨域請求有關,但請求頁面和ajax源都位於同一個域中。它只是包含在另一個頁面的框架中。它大部分時間都在工作,但有時它會停止工作......非常奇怪。 firebur控制檯在ajax調用之前輸出日誌行,並且該調用返回200返回碼。 – Endre 2010-02-17 12:32:23

+0

哇,真的。所以你會看到200的返回代碼,當你在Firebug中查看調用的輸出時,標記看起來像你期望的那樣,或者它可能是畸形的,並且混淆了jQuery? – 2010-02-17 12:38:55

+0

那真是太奇怪了。返回的數據看起來不錯,成功函數中的第一行代碼是將其記錄到螢火蟲控制檯,但它不會被觸發。 我試圖將golbal設置爲false。我認爲問題可能出現在全局Ajax事件處理程序中。 – Endre 2010-02-18 09:44:46

0

,你可以嘗試把一個async: false,在你的電話。

注知道你是什麼意思「的AJAX功能內頁,重新加載。」

+0

我的觀點是,錯誤並非一直存在。它有時會加入,我無法重新創建它。我「認爲」它發生在頁面以某種方式中斷ajax調用時。 – Endre 2010-02-17 12:28:29