2012-01-03 58 views
0

我有一些代碼在Chrome中完美工作,但它在IE中出錯。 if條件在chrome中完美工作,但似乎在IE中,第一個條件總是被執行,而不管resData的值如何。我wiresharked響應,並且數據包包含'開始',但它仍然在第一條件如果條件if(resData ==='不runnin')。

$.get('/getOutputBuffer', function(resData){ 
    if(resData === 'not running'){ 
     $('#output').append('Executable not started<br>'); 
    } 
    else{ 
     $('#output').append('Executable started (Now listening)<br>'); 
     if(resData !== 'no updates'){ 
      $('#output').append('status is ' +resData); 
     } 
    } 
}); 

編輯:

我已經改變了所有的條件,如果用 「==」。

經過更多的調試,它並不總是執行第一個條件,ajax函數似乎是問題所在。它在頁面加載後第一次執行時會獲得正確的數據值,但是任何其他GET都會給我第一個值,即使在wireshark中它也會顯示正確的更新值。

回答

1

聽起來像臭名昭着的IE-AJAX緩存問題。以下是一些信息http://ajaxian.com/archives/ajax-ie-caching-issue,但Google可能會爲您提供更多信息。 IE緩存響應,所以我想這就是爲什麼你一次又一次得到第一個響應。我有點困惑,因爲你在Wireshark看到這些請求正在進行,但嘗試將URL設置爲'/getOutputBuffer?r=' + new Date().getTime(),看看會發生什麼。

+0

問題確實存在。更改$ .get爲$ .post,並更改我的get請求服務器端的帖子,這一切工作。原因是post不會在每次請求後緩存,就像相應的規範一樣。有趣的是,鉻不遵循這一點,但IE瀏覽器。 – guiomie 2012-01-03 20:57:53

3

不要使用「===」,只需使用「==」即可。字符串OBJECT和字符串LITERAL之間有一個類型差異。在這種情況下,您只關心值等價,而不關心(值+類型)等價。

+0

試過了,它不能解決問題。我編輯了我的帖子,似乎與其他條件相關。 – guiomie 2012-01-03 20:09:05