jQuery $.ajax() 函数中的图像缓存问题

3

我有一个非常奇怪的问题。 我使用ajax和php创建了一个登录系统。
当用户资料被加载时,用户还有一张图片。
然后,当我尝试在模态对话框上使用iframe更改图片并按保存时, 图像应该在不刷新页面的情况下在用户资料中更改。
我使用

$(".userPicture").attr("srs","Users/"+username+"/profileimg.jpg");

我也尝试过

$(".imgContainer").html("<img src='Users/"+username+"/profileimg.jpg' class='userPic' >");

仍然无法运行

似乎即使我上传了新图片,缓存的图片仍会加载到个人资料照片中。
问题在于我想使用ajax进行操作而不需要刷新页面。
如果我重新加载页面,则图片将更改。请帮忙解决。 还有,在成功函数中如何验证$.ajax函数的特定输出。

$.ajax({
    type: 'POST',
    url: baseURL,
    dataType: 'html',
    cache: false,
    data: {
        action: "LOGIN",
        username:username,
        password:password
    },
    success: function(data) {
        if (data == "empty") {
           showError("Error: Wrong Username or Password","loginTab");
        }
        else {

        }
    }
});

当我使用数据类型 json 时,如果数据为空,我可以验证我的数据,但是当我使用 html 时,我无法进行验证。 有没有其他方式可以处理这种情况。

1个回答

8

在URL中添加缓存破坏随机值,迫使服务器获取新的副本:

"Users/"+username+"/profileimg.jpg?cachebuster=" + new Date().getTime()

由于只是获取一个jpg文件,因此Web服务器将忽略查询字符串,而查询字符串将迫使浏览器将其视为“新”请求,因此它将绕过缓存并访问服务器。


我该如何在这里实现这个功能: $(".imgContainer").html("<img src='Users/"+username+"/profileimg.jpg' class='userPicture' >"); - aygeta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接