2011-09-13 90 views
2

我有一個非常奇怪的jQuery AJAX問題,我無法弄清楚。

問題是,在IE9中,有時(我不能再現它),它不提交任何數據,雖然AJAX成功返回。另外,1個AJAX POST將不會發送任何數據,而下一個和同一頁上的任何後續數據將會成功。

的AJAX運行在大頭蝦大賽這裏的遊戲:www.bigshrimpcontest.com/play

有遊戲的過程中發生一些AJAX文章:(1)在開始(記錄開始時間),(2)當遊戲結束(記錄遊戲的結束時間和統計/分數),(3)提交表格(記錄他們的姓名,電子郵件等)。在服務器上,我會看到請求,但沒有POST或GET數據。我只在IE9中看到過這個問題(我們阻止了IE6 & 7)。

遊戲JavaScript在這裏:www.bigshrimpcontest.com/js/game.js AJAX請求是258行(#1),40行(#2),99行(#3)。

我試着將緩存設置爲false,但是沒有任何區別。我正在使用jQuery Form,但我已經刪除它,問題仍然存在。

任何想法?只要不破壞遊戲,我願意嘗試。

我還擔心在其他項目中使用相同的方法,這些方法對於保存數據更爲重要。

編輯

我已經試過這兩個選項:添加時間戳,並沒有運氣改變用戶代理meta標籤到IE8和EmulateIE8,兩者。

還有其他想法嗎?

回答

1

在我看來,這是一個jQuery的錯。我想你應該等待解決問題的新版本 - 並且可以在你的元標記中添加「EmulateIE8」。

+0

我已經將元標記更改爲,但仍然沒有運氣。任何其他想法? –

+0

嘗試: biphobe

+0

仍然沒有運氣:( –

1

你聲明:

它不提交任何數據,雖然AJAX成功返回。

這聽起來像是緩存問題。據jQuery的緩存:

cacheBoolean默認值:true,false爲的dataType '腳本' 和 'JSONP'

如果設置爲false,這將迫使請求的頁面不被 瀏覽器緩存。將緩存設置爲false還會將查詢字符串參數 「_ = [TIMESTAMP]」附加到URL。

但是,我通過FF Firebug探測URL,我沒有附加「_ = [TIMESTAMP]」被追加到您的URL。

檢查此SO Question ajax-problem-in-ie9中接受的答案,並嘗試在jQuery中手動添加時間戳,而不是通過將緩存設置爲false。

+0

我試圖在POST數據中添加一個單獨的ts var,但沒有運氣。 –

0

所以,我想我已經找到了一個解決方案:使用GET(vs POST)。我將所有的請求都改爲$.ajax('...', { type : 'GET' ... });,從那以後就沒有問題了。我還必須縮短變量,以便GET請求對於IE不會太長。這也可能是解決方案的一部分,但我不確定。