2010-06-17 68 views
3

好吧,此代碼適用於除IE以外的所有瀏覽器(同樣,預計)。代碼應該基於setInterval進行刷新,並且通常在除IE之外的其他所有瀏覽器中執行,而IE只刷新。你能發現問題嗎?另一個IE問題與AJAX

var nick = document.getElementById("chatnick").value; 
var sessid = document.getElementById("sessid").value; 
var room = document.getElementById("roomid").value; 
function user_read() { 
    $.ajax({ 
type: "GET", 
url: "methods.php", 
data: {method: "u", room: room}, 
dataType: "html", 
success: function (data, status, xhr) { 
    $("#userwindow").html(data); 
    setTimeout(user_read, 10000); 
} 
}); 
} 
function ajax_read() { 
$.ajax({ 
type: "GET", 
url: "methods.php", 
data: {method: "r", room: room}, 
dataType: "html", 
success: function (data, status, xhr) { 
    $("#chatwindow").html(data); 
    setTimeout(ajax_read, 400); 
} 
}); 
} 
function submit_msg() { 
var msg = document.getElementById("chatmsg").value; 
$.ajax({ 
    type: "GET", 
    url: "methods.php", 
    data: {method: "w", room: room, m: msg, n: nick, sessid: sessid}, 
    dataType: "html", 
    success: function (data, status, xhr) { 
    } 
}); 
document.getElementById("chatmsg").value = ""; 
} 
function keyup(arg1) { 
if (arg1 == 13) submit_msg(); 
} 
setTimeout(function(){ajax_read();}, 400); 
user_read(); 
+0

爲什麼在DOM準備事件而不是setTimeout()中使用setInterval。在ajax設置中也設置cash:false。 – mohang 2010-06-17 13:50:34

+0

因爲,我是JS和jQuery的新手,不知道如何操作DOM。 – Nik 2010-06-17 13:51:56

+0

設置緩存:false對IE沒有任何幫助。 – Nik 2010-06-17 13:56:54

回答

4

可能是緩存問題,請嘗試使用POST而不是GET。實際上,如果您可以使用郵政地址IE不緩存POST請求/響應

此外,您清除ajax函數完成之前發送的消息,似乎很腥。嘗試像這樣重寫:

function submit_msg() { 
var msg = $("#chatmsg").val(); 
$.ajax({ 
    type: "POST", 
    url: "methods.php", 
    data: {method: "w", room: room, m: msg, n: nick, sessid: sessid}, 
    dataType: "html", 
    success: function (data, status, xhr) { 
     $("#chatmsg").val(""); 
    } 
}); 

} 
+0

發送不是問題,它正在更新user_read和ajax_read div。 – Nik 2010-06-17 13:49:18

+0

這似乎是IE緩存的div,我如何阻止它做到這一點。 POST不能解決問題。 – Nik 2010-06-17 13:50:56

+0

無處不在,IE不緩存POST請求/響應。 - http://ajaxian.com/archives/ajax-ie-caching-issue – dmp 2010-06-17 14:04:48

1

緩存是我在IE中使用AJAX運行的一個問題。你有沒有嘗試追加一些URL來使它們獨一無二?例如,一個隨機整數作爲參數。