2013-06-01 4 views
-1

Я использую следующий код, чтобы обновить div, содержащий комментарии, но есть что-то, что не работает так, как должно.Обновление div без перезагрузки страницы с помощью ajax

Через 60 секунд он обновляет div и после обновления отображает 0 (мерцает каждые 10 секунд или что-то в этом роде) вместо обновленного списка комментариев. Я понятия не имею.

Ничего не видно, проверяя исходную страницу, никаких ошибок.

enter image description here

function ajax_com(){ 
    var xmlHttp; 
    try{ 
    xmlHttp=new XMLHttpRequest(); 
    }catch (e){ 
    try{ 
     xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
    }catch (e){ 
     try{ 
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     }catch (e){ 
      alert("No AJAX!?"); 
      return false; 
     } 
    } 
    } 
    xmlHttp.onreadystatechange=function(){ 
    document.getElementById("tble").innerHTML=xmlHttp.responseText; 
    setTimeout('ajax_com()',60000); 
    } 
    var data = "action=ajax_com"; 
    xmlHttp.open("POST","http://wwwsite.com/wp-admin/admin-ajax.php",true); 
    xmlHttp.send(data); 
} 
window.onload=function(){ 
    setTimeout('ajax_com()',60000); 
} 
+0

Не могли бы вы добавить html на вопрос, пожалуйста? –

+0

комментарий 1 comment2 – Klaus

ответ

0

Проблема xmlHttp.responseText является 0 или пуст.

Ваш аякс не возвращает никаких данных или не так ли? Попробуйте использовать Firebug, чтобы узнать, действительно ли он возвращает данные. Плюс возвращенные данные могут быть структурированы, поэтому вам нужно проанализировать данные ответа и отображать комментарии соответственно с различными атрибутами, такими как имя плаката, изображение, фактический комментарий и т. Д.

0

Это ваш метод использования onreadystatechange Этот метод запускается при нескольких изменениях состояния.

Вы хотите проверить на состояния на xmlHttp.readyState имущества, являющегося закончил состояние следующим образом:

xmlHttp.onreadystatechange=function(){ 
    if (xmlHttp.readyState === 4) { 
    document.getElementById("tble").innerHTML=xmlHttp.responseText; 
    setTimeout('ajax_com()',60000); 
    } 
} 

Вы могли бы также проверить на xmlHttp.status, что это 200 например:

if (xmlHttp.readyState === 4 && xmlHttp.status === 200) { 
... 
} 
+0

Ну, я добавил, что сказал sh0ber, и я не обновился. После того, как я добавил свой код, он снова обновляется, но он все равно выводит 0 – Klaus

+0

Как предложил Джей Пател, попробуйте использовать firebug. Если вы не знаете, как его использовать, просто добавьте alert (xmlHttp.responseText); перед операцией «if». –

+0

В первый раз он возвращает пустой второй раз 0, я искал google для решений, но пока я не вижу никого – Klaus

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