2010-01-04 15 views

Respuesta

58

Puede forzar una actualización añadiendo una cadena aleatoria al final, cambiando así la URL:

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

Eww. No, no. Establezca en su lugar los encabezados de respuesta de caché apropiados en el servidor. –

+1

'Cache-control',' Expires', et al. solo funciona una vez que se recibe una solicitud HTTP; lo anterior es simplemente para forzar al cliente a realizar esa solicitud. En ausencia de 'Image.reload' (AFAIK), este era el método más simple para hacer una nueva solicitud. –

+6

sugeriría subserie en el atributo src a"? " de modo que después de la primera vez, no se sigan agregando más datos de cadena de consulta ... – Tracker1

9

Añadir una marca de tiempo o un número aleatorio:

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

¡La marca de tiempo es una mejor solución! No puedes confiar en el azar para no ser el mismo a veces. – jerwood

+0

intentó esto pero teniendo problema en Chrome. Image src se adjunta con la marca de tiempo, pero la miniatura no se actualiza. ¿Puede sugerirme algo sobre esto? –

+0

@RohanPatil - Aquí hay un problema obvio: desea ** agregar o actualizar ** un parámetro ** de consulta ** - este código es solo una solución parcial - supone que no hay parámetros de consulta para comenzar (además , Sospecho que solo funciona una vez). – Kobi

0

En conjunto prueba.php los encabezados de Content-Type: a image/jpeg

6

Tomando gran respuesta de KPrimes y agregando la sugerencia de los rastreadores, esto es lo que se me ocurrió:

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; 
    }); 
}); 
Cuestiones relacionadas