Recharger AJAX données toutes les X minutes/secondes, jQuery
J'ai programmé un CMS qui a un journal qui a récemment ouvert une session dans le système. Actuellement, ces données sont introduites dans un jQuery UI onglet via Ajax. Je voudrais mettre cette information dans un encadré sur la page principale et de le charger via AJAX toutes les 30 secondes (ou une période de temps définie).
Comment pourrais-je aller sur le faire? La réponse PHP doivent être JSON codé? Je suis assez nouveau à l'AJAX et JSON données.
Voici le PHP je suis en train d'utiliser pour tirer les détails de la table des utilisateurs-
<?php
$loginLog = $db->query("SELECT name_f, name_l, DATE_FORMAT(lastLogin, '%a, %b %D, %Y %h:%i %p') AS lastLogin FROM user_control ORDER BY lastLogin ASC LIMIT 10");
while ($recentLogin = $loginLog->fetch()) {
echo $recentLogin['name_f'] . " " . $recentLogin['name_l'] . " - " . $recentLogin['lastLogin'];
}
?>
Merci!
Mise à JOUR
Bon d'accord, c'est ce que j'ai à ce jour.. la partie, je suis coincé sur est de savoir comment faire une boucle par JSON et entrez-le dans la boîte. Il fonctionne très bien tant que je n'utiliser qu'un seul résultat et de s'assurer qu'il n'est pas dans [ ]. Je suis en train d'apprendre l'Ajax et JSON, pour une raison quelconque, il ne vient pas de moi aussi facilement.
Javascript -
$(document).ready(function(){
function refreshUsers(){
$.getJSON('json.php', function(data) {
for (var i = 0; i < data.length; i++) {
$("#loadHere").html('<p>' + data.name + ' ' + data.lastLogin + '</p>');
}
});
}
var refreshInterval = setInterval(refreshUsers, 30 * 1000);
refreshUsers();
});
Ce que mon script PHP sorties -
[{"name":"Joe Smith","lastLogin":"Fri, May 21st, 2010 08:07 AM"},{"name":"Jane Doe","lastLogin":"Fri, May 21st, 2010 07:07 AM"}]
Merci!
OriginalL'auteur NightMICU | 2010-05-21
Vous devez vous connecter pour publier un commentaire.
PHP, utiliser des json_encode().
Côté Client, l'utilisation $.getJSON():
Avec ces 2, vous devez avoir beaucoup de choses à commencer avec. Plus que cela, vous seriez en nous demandant de travailler pour vous 🙂
Content d'avoir pu aider! Si c'est la bonne réponse, s'il vous plaît marquer comme acceptée si d'autres ont le même problème de savoir comment le résoudre. Concernant le bouclage, rappelez-vous ce que vous avez en PHP et encoder en JSON se comporte exactement de la même de l'autre côté: si c'était ab objet, vous pouvez accéder à des propriétés en JS à l'aide de la
.
opérateur; si c'était un tableau, juste itérer comme vous le feriez presque du langage;data[i]
. Méfiez-vous des cartes en PHP: ils deviennent des objets JSON.Ok, j'ai donc été en mesure de comprendre comment faire une boucle à travers les données JSON et l'ajouter à la bonne DIV à l'aide .appendTo(). Mais ce dont j'ai besoin est juste de charger les résultats de la table MySQL et les insérer dans le DIV sidebar toutes les X secondes. Mailslut de la méthode qui semble être le mieux pour ce - que c'est simple à boucle à travers la table avec PHP et insérer le code HTML dans le DIV. Donc, ma question: quel est l'avantage de JSON vs $.load() pour cette application? Comment pourrais-je encore utiliser JSON et ajoutez tous les résultats de la table dans la DIV sans en les ajoutant à chaque fois? Merci!
Vous aurez besoin pour créer le code HTML à la volée et de les ajouter, il n'y a pas d'autre moyen. Mais, à mon humble avis, c'est mieux, de manière plus souple. Voir mes commentaires dans Mailslut réponse: la création des DIVs en PHP n'est pas une bonne décision, parce que vous êtes de mélange de logique avec la présentation. En fait, il n'y a pas beaucoup de point dans la génération de code HTML à l'intérieur de ce script PHP, parce que le HTML ne sera pas nécessaire à tous sans JS activé, obtenu ce que je veux dire? Vous pouvez le faire de toute façon et il va semble plus rapide pour vous, qui sera, mais pas souple du tout si un dev est en charge de PHP et un autre de JS.
Salut Steb, je ne peut pas avoir été clair dans mon post original. En gros, j'ai juste besoin d'injecter de la fraîcheur des lignes à partir d'une table MySQL dans mon DIV sidebar. Le PHP lui-même ne contiennent HTML pour la structure des paragraphes, mais il n'ajoute pas de DIVs, ni ne crée de la DIV parent que les données sont chargées dans. C'est pour un système CMS qui ne sera utilisé que par une poignée de personnes, ils ont tous été informés que le JavaScript est nécessaire parce que le système repose donc fortement sur elle. Comme je l'ai dit, je ne peux pas comprendre comment mettre à jour le DIV avec de nouvelles données à l'aide de JSON, sans répéter les mêmes données plus et plus..
OriginalL'auteur Seb
La façon la plus simple (que ce soit la meilleure façon est subjectif - pour le cas d'utilisation que vous avez présenté, je dirais que sa fine) serait de faire:
Toutes les 30 secondes, ce serait de charger la sortie de votre script PHP, et placez-la sortie de l'élément avec l'ID =
whereIWantToDisplayIt
Je préfère la réponse de Seb.
load()
signifie que le serveur est de savoir comment rendre les résultats. À mon humble avis, il serait préférable de séparer la présentation et de laisser la partie HTML le JavaScript côté. Après tout, c'HTML ne sont pas utilisées si le JS est désactivé.OriginalL'auteur Dal Hundal