2010-06-17 4 views
3

Хорошо, этот код работает в каждом браузере, кроме IE (опять же, как и следовало ожидать). Код должен обновляться на основе setInterval и делает это обычно во всех других браузерах, кроме 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

Почему вы не используете setInterval в событии готовности DOM вместо setTimeout(). Также установите cash: false в настройках ajax. – mohang

+0

Потому что я новичок в JS и jQuery, и не умею манипулировать DOM. – Nik

+0

Настройка кеша: false ничего не делает для IE. – Nik

ответ

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

Отправка не является проблемой, она обновляет div_ user_read и ajax_read. – Nik

+0

Похоже, что IE кэширует divs, как я могу предотвратить это. POST не решает проблему. – Nik

+0

Использовать почту везде, IE не кэширует POST-запросы/ответы. - http://ajaxian.com/archives/ajax-ie-caching-issue – dmp

1

Кэширование - проблема, с которой я столкнулся в IE с использованием AJAX. Вы пытались добавить что-то к URL-адресам, чтобы сделать их уникальными? Например, случайное целое число как параметр.

Смежные вопросы