2012-11-07 87 views
2

我在Opera中遇到了一個小問題。我無法在其他瀏覽器中複製此內容。Opera在第一次加載頁面時會發出兩次ajax請求

我有一個正在加載的頁面。一旦加載頁面,使用JavaScript我做了一個Ajax請求來加載一些信息在JSON格式(我使用jQuery)。
問題是,opera使ajax請求兩次。在歌劇蜻蜓它告訴我,它只提出了1個請求,但我的http服務器說不同。

請求的頁面是這樣的:http://localhost/session&_=1352301441410其中最後一個數字是隨機的。

我還增加了以下響應頭:

Expires: Mon, 26 Jul 1997 05:00:00 GMT 
Last-Modified: Wed, 07 Nov 2012 15:17:22 GMT 
Cache-Control: no-store, no-cache, must-revalidate 
Cache-Control: post-check=0, pre-check=0 
Pragma: no-cache 

我認爲這個問題是與緩存相關的東西,因爲只有當頁面加載第一次發生這種情況時,或者當我清除緩存。
我使用最新的Opera:Opera 12.10

在其他瀏覽器上,一切正常。

+1

你的javascript在哪裏?它可能是間歇性地導致它發生兩次的競賽狀況。 –

+0

我的腳本位於標題標記中的單獨js文件中。首先,我認爲是一樣的。這是我的一個錯誤。但蜻蜓告訴我只有一個要求。當我在Firefox中測試時,螢火蟲也向我展示了只有1個請求。但是隻有歌劇在清除緩存時發出2個請求。 –

回答

0

前段時間我在Chrome上發現了一個類似的問題。它調用了兩次相同的函數(但它在調試器的時間線中只顯示一次,爲了解決這個問題,我使用了一個函數調用時設置爲1的變量,並在完成時將其設置爲0。

if (security_var == 0) 
{ 
    security_var = 1; 
    function_whatever(); 
} 
else 
{ 
    alert('Function called while variable is 1'); 
} 

而功能將是這樣的:

function function_whatever() 
{ 
    //the code bla bla bla 
    //..... 

    security_var = 0; 
} 

只記得當然,該功能不會如果變量是1調用該函數的代碼段是這家名爲如果你的函數有其他方法退出,你也應該把security_var = 0;放在那裏:)這不是避免問題的最好方法(例如,應該是你的樂趣因爲任何原因,你可能會發現自己無法再次啓動它,因爲該變量設置爲1),但可以用於測試;該警報讓你驗證它。

相關問題