C'est probablement une question simple mais je suis perplexe et je ne sais pas par où commencer.Utiliser AJAX/jQuery pour actualiser une image
J'ai un script PHP (image_feed.php) qui renvoie une URL à une image. Chaque fois que cette URl est appelée, elle renvoie la dernière image disponible (l'image change toutes les deux secondes). Qu'est-ce que je veux arriver, c'est que lorsque la page se charge, il y a un appel AJAX à image_feed.php, qui renvoie la dernière URL. Cet URl est ensuite inséré dans le HTMl en remplacement de l'image src appropriée.
Après 5 secondes, je souhaite que le processus se répète et que l'image soit mise à jour. Cependant, je ne veux pas que l'image soit permutée tant que le chargement n'est pas terminé, et je veux éviter qu'un espace blanc apparaisse avant que la nouvelle image ne se charge.
Pour l'instant, j'ai le jQuery suivant, qui charge simplement la valeur de retour de image_feed.php directement dans un div appelé # image1. image_feed.php est correctement formaté pour fournir une balise d'image html.
$(document).ready(function(){
var $container = $("#image1");
$container.load('image_feed.php?CAMERA_URI=<?=$camera_uri;?>')
var refreshId = setInterval(function()
{
$container.load('image_feed.php?CAMERA_URI=<?=$camera_uri;?>');
}, 5000);
});
Cela fonctionne, mais il y a un problème. Je reçois un espace blanc de la taille de l'image dans IE et Firefox chaque fois que l'image se rafraîchit, car l'image prend un certain temps à télécharger.
Je sais que j'ai besoin de image_feed.php pour retourner l'URL brut à l'image. J'utilise ensuite jQuery pour demander cette URL, la précharger puis l'échanger avec l'image existante.
Cependant, je me bats toujours pour aller n'importe où. Quelqu'un pourrait-il avoir la gentillesse de me donner des conseils/de l'aide?
Belle réponse, seulement dans le cas où cela prend quelques secondes pour charger l'image cela ne fonctionnera pas. Peut-être utiliser setTimeout (au lieu de setInterval) après onload, dans une fonction qui s'appelle elle-même? – darma
Cela a fonctionné parfaitement tout de suite! Fantastique! Maintenant, je vais juste devoir l'éditer légèrement pour ne pas attendre 5 secondes avant de charger la première image. Merci! – dopey
@darma c'est vraiment une préoccupation. Vous devez ensuite faire face à la question de l'image suivante ne charge jamais, mais assez facile. – Finbarr