2010-01-04 5 views

Répondre

58

Vous pouvez forcer un rafraîchissement en ajoutant une chaîne aléatoire à la fin, changeant ainsi l'URL:

$('#verifyimage').click(function() { 
    $(this).attr('src', $(this).attr('src')+'?'+Math.random()); 
}); 
+2

Eww. Non, ne le fais pas. Définissez les en-têtes de réponse de mise en cache appropriés sur le serveur à la place. –

+1

'Cache-control',' Expires', et al. ne fonctionne qu'une fois qu'une requête HTTP est reçue - ce qui précède est simplement de forcer le client à faire cette demande. En l'absence d'un 'Image.reload' (AFAIK), ce fut la méthode la plus simple de faire une nouvelle demande –

+6

suggère l'attribut sous-chaîne src à un « ? » de sorte que, après la première fois, il ne continue pas d'ajouter plus de données querystring ... – Tracker1

9

Ajouter un horodatage ou un nombre aléatoire:

var timestamp = new Date().getTime(); 
$(this).attr('src',$(this).attr('src') + '?' +timestamp); 
+2

L'horodatage est une meilleure solution! Vous ne pouvez pas compter sur le hasard pour ne pas être la même chose parfois. – jerwood

+0

essayé cela mais ayant des problèmes en chrome. Image src est ajouté à l'horodatage mais la vignette n'est pas actualisée. Pouvez-vous me suggérer quoi que ce soit à ce sujet? –

+0

@RohanPatil - Il y a un problème évident ici - vous voulez ** ajouter ou mettre à jour ** un paramètre de requête ** ** - ce code est juste une solution partielle - il suppose qu'il n'y a pas de paramètres de requête pour commencer (en plus , Je soupçonne que ça ne marche qu'une seule fois). – Kobi

0

Dans test.php ensemble les en-têtes de Content-Type: à image/jpeg

6

Prendre KPrimes grande réponse et en ajoutant dans la suggestion de trackers, ce que je suis venu avec:

jQuery(function($) { 
    // we have both a image and a refresh image, used for captcha 
    $('#refresh,#captcha_img').click(function() { 
     src = $('#captcha_img').attr('src'); 
    // check for existing ? and remove if found 
     queryPos = src.indexOf('?'); 
     if(queryPos != -1) { 
      src = src.substring(0, queryPos); 
     }  
     $('#captcha_img').attr('src', src + '?' + Math.random()); 
     return false; 
    }); 
}); 
Questions connexes