2016-04-09 3 views
0

Я занимаюсь блогами с PHP, AJAX, MySQL и т. Д. Как обычно, каждый пост имеет свой идентификатор, а внутри сообщений вы можете видеть комментарии.Как я могу постоянно обновлять отдельный div, сохраняющий идентификатор сообщения?

То, что я пытаюсь сделать, это обновить комментарий div-х, вызвав comments.php документ с AJAX и положить его в div с $('#comments').html(data);.

Делать это каждые 5 секунд для поддержания комментариев, как в режиме реального времени, но проблема в том, что, когда div делает первый освежающий, то div теряет идентификатор пост и сказать, что это undefined.

Как я могу обновить любой номер div без потери идентификатора сообщения?

Если я вызываю файл comments.php с типичным include(file.php) внутри почтового файла, у меня нет проблем, но, используя этот способ, я просто не могу обновить содержимое.

Вот код:

post.php:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $.ajax({ 
     url: 'support/comments.php', 
     success: function(data) { 
      $('#comments').html(data); 
     } 
    });  
}); 
</script> 

div где будет результат будет показано:

<div id="comments"> 
</div> 

Скрипт для обновления div:

<script language="Javascript" type="text/javascript"> 
function refreshDivs(divid, secs, url) { 
    // define our vars 
    var divid,secs,url,fetch_unix_timestamp; 

    // The XMLHttpRequest object 
    var xmlHttp; 
    try { 
     xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari 
    } catch (e) { 
     try { 
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer 
     } catch (e) { 
      try { 
       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (e) { 
       alert("your browser doesn't support ajax."); 
       return false; 
      } 
     } 
    } 
    // Timestamp para evitar que se cachee el array GET 
    fetch_unix_timestamp = function() { 
     return parseInt(new Date().getTime().toString().substring(0, 10)) 
    } 
    var timestamp = fetch_unix_timestamp(); 
    var nocacheurl = url+"?t="+timestamp; 

    // the ajax call 
    xmlHttp.onreadystatechange = function() { 
     if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { 
      document.getElementById(divid).innerHTML=xmlHttp.responseText; 
      setTimeout(function(){refreshDivs(divid,secs,url);},secs*1000); 
     } 
    } 
    xmlHttp.open("GET",nocacheurl,true); 
    xmlHttp.send(null); 
} 
window.onload = function startrefresh() { 
    //update content on real time 
    refreshDivs('comments',10,'support/comments.php'); 
} 
</script> 
+1

Что такое refreshDivs? – user2182349

+0

* update * его содержимое – kukiko11

ответ

0

Вы можете передать идентификатор сообщения в URL, например, так:

url: 'support/comments.php?id=<?= $post_id ?>' 

Затем обернуть вызов с SetTimeout, например, так:

window.setInterval(function(){ 
    $.ajax({ 
     url: 'support/comments.php?id=<?= $post_id ?>', 
     success: function(data) { 
      $('#comments').html(data); 
     } 
    }); 
}, 5000); 

И выбросьте refreshDiv.

Предполагается, что комментарии comments.php извлекают комментарии, а некоторые другие - к ним.

+0

Я пробовал, но это не сработало ... Не имеет значения, пользуюсь ли я дружественными URL-адресами? ... на самом деле comments.php также оставлять комментарии – kukiko11

+0

в comments.php Я попытался получить id с $ id = intval ($ _ GET ['n']); но это не сработало – kukiko11

0

ОК, ребята, я решил это ... Я собираюсь оставить код здесь, если у кого-то может быть такая же проблема ... что я сделал, это построить скрытый ввод и поместить этот вход, чтобы использовать его значение, как идентификатор из сообщения, затем я отправил значение этого ввода в скрипт с # ('div'). val и, наконец, я отправил это значение в файл comments.php, когда есть .... Я использовал значение в запросе предложение для выполнения сравнительного и, наконец, могут получить комментарии в правый угол

Вот код

<script> 
$(document).ready(function() { 
    window.setInterval(function(){ 
//Comentarios 
       var id = $("#idcomment").val(); 
     $.get("support/comments.php", { idpost: id }, function(LoadPage){ 
     $("#comment").html(LoadPage); 
     }); 
    }, 5000); 
    }); 
</script> 
Смежные вопросы