2016-04-09 9 views
0

Ich mache einen Blog mit PHP, AJAX, MySQL, usw. Wie üblich, hat jeder Beitrag seine ID und in den Beiträgen können Sie die Kommentare sehen.Wie kann ich ständig ein individuelles div aktualisieren, das die ID des Posts erhält?

Was ich versuche ist, den Kommentar der refresh div durch das comments.php Dokument mit AJAX Aufruf und es in den div mit $('#comments').html(data); setzen.

tun dies alle 5 Sekunden für die Aufrechterhaltung der Kommentare wie in Echtzeit, aber das Problem ist, dass, wenn die div die erste Auffrischung tut, die div die ID des Post verliert und sagen, dass undefined ist. Wie kann ich div aktualisieren, ohne die ID des Posts zu verlieren?

Wenn ich die comments.php Datei mit der typischen include(file.php) innerhalb der Post-Datei aufrufen, habe ich kein Problem, aber auf diese Weise kann ich nur nicht den Inhalt aktualisieren.

Hier ist der Code:

post.php:

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

div wo das Ergebnis zeigt, werden wird:

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

Script zum Auffrischen der 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

Was ist refreshDivs bekommen kann? – user2182349

+0

* update * seinen Inhalt – kukiko11

Antwort

0

Sie können die Post-ID in der URL übergeben, etwa so:

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

dann den Anruf mit einem setTimeout wickeln, etwa so:

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

Und refreshDiv verwerfen.

Dies ist davon ausgegangen, dass comments.php die Kommentare abruft, und einige andere Code-Beiträge sie.

+0

Ich habe versucht, aber es hat nicht funktioniert ... es spielt keine Rolle, wenn ich freundliche URLs verwende? ... eigentlich comments.php auch die Kommentare – kukiko11

+0

in comments.php Ich habe versucht zu bekommen die ID mit $ id = intval ($ _ GET ['n']); aber es hat auch nicht funktioniert – kukiko11

0

ok Leute, ich habe es gelöst ... Ich werde den Code hier lassen, falls jemand das gleiche Problem haben könnte ... was ich getan habe, war eine verborgene Eingabe zu bauen und diese Eingabe zu verwenden, um ihren Wert wie die ID zu verwenden der Post, dann habe ich den Wert dieser Eingabe an das Skript mit # ('div'). val gesendet und schließlich habe ich diesen Wert an die Datei comments.php gesendet, sobald es dort war .... Ich habe den Wert in der Abfrage verwendet Satz für die vergleichenden tun und schließlich die Kommentare in den rechten Pfosten

Hier ist der Code

<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> 
Verwandte Themen