2012-08-29 60 views
1

就在今天,我發現我有IE瀏覽器的一個重大問題..jQuery的AJAX請求對IE9的回調是不確定的

我有一個關於接收系統和用戶每5秒的各種細節,並更新值的環必要時在頁面上。

var query = '?name=value&other=bar'; 
if($('input.something').attr('checked') == 'checked') { 
    query += '&more=info';      
} 

構建查詢後,我使用$不用彷徨檢索信息:

$.get('json_builder.php' + query, function(callback) { 
    alert(callback); 
}); 

我的回調是一個JSON我剛剛通過檢查在HTML等所需的值構建查詢字符串,我轉換爲一個對象使用$ .parseJSON(callback);和我使用該對象來訪問我的數據。

我在所有瀏覽器(IE除外)中獲得JSON回調警報,在IE中我得到「未定義」。

但是,請求通過,就像在開發人員工具部分,我看到響應實際上存在,但由於某種原因變量「回調」保留「未定義」。

我試過使用$ .getJSON而不是$ .get - 結果相同。

+0

您是否試過使用'$ .ajax'調用而不是'get'快捷方式?我過去曾經在'get'和'post'方面遇到過一些問題,而'ajax'的調用工作正常。 –

+0

是的,我試過沒有使用它的快捷方式,但無濟於事。 – Matt

+0

你有沒有嘗試將'cache'選項設置爲'false'?最簡單的方法是$ .ajaxSetup({cache:false});'以便它適用於所有後續的AJAX請求。您可能還想爲該AJAX請求顯式指定'json'的數據類型(也將避免您必須自己解析響應)。 –

回答

0

我會跟下面阿賈克斯$,不知道建它,如果這是你已經嘗試過:

var dataToSend = {'name':'value', 'other':'bar'}; 
if($('input.something').attr('checked') == 'checked') { 
    dataToSend.push({'more':'info'}); 
} 
    $.ajax({ 
    url:'json_builder.php', 
    data:dataToSend, 
    success function(callback) { 
     alert(callback); 
     }, 
    dataType:'json' 
    }); 
3

我是有這個問題,但是經過大量的試驗和錯誤我的改變了我的PHP頭代碼...

header('Content-Type: application/json; charset=utf8'); 

到...

header('Content-Type: application/json'); 

解決了這個問題對我來說。

+0

這也適用於我,但與Content-Type:application/json。 – Randy