如何使用jQuery刷新<img rel="nofollow noreferrer" />的src?

use*_*729 28 jquery

<img src="test.php" />
Run Code Online (Sandbox Code Playgroud)

其中test.php生成一个随机数的图像.

我试过了 :

$('#verifyimage').click(function() {
        $(this).attr('src',$(this).attr('src'));
    });
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

K P*_*ime 58

您可以通过在末尾附加随机字符串来强制刷新,从而更改URL:

$('#verifyimage').click(function() {
    $(this).attr('src', $(this).attr('src')+'?'+Math.random());
});
Run Code Online (Sandbox Code Playgroud)

  • 会建议src属性的子字符串为"?" 所以在第一次之后,它不会继续附加更多的查询字符串数据...... (6认同)
  • 好恶.不,不.而是在服务器上设置适当的缓存响应标头. (2认同)
  • `Cache-control`,`Expires`等.只有在收到HTTP请求后才能工作 - 上面只是强制客户端发出请求.在没有`Image.reload`(AFAIK)的情况下,这是发出新请求的最简单方法 (2认同)

Kob*_*obi 9

添加时间戳或随机数:

var timestamp = new Date().getTime();
$(this).attr('src',$(this).attr('src') + '?' +timestamp );
Run Code Online (Sandbox Code Playgroud)

  • 时间戳是更好的解决方案!你有时候不能依赖随机而不是相同. (2认同)

Sea*_*ney 6

考虑到KPrimes很好的答案并添加跟踪器建议,这就是我想出的:

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;
    });
});
Run Code Online (Sandbox Code Playgroud)