0

我正在一个有一组图像的网站上工作,第一张图像就像一个头像..当我想更改头像(第一张图片)时,我所做的是将第一张图像名称与我想要的新图像交换用作头像。我在 ajax 函数上执行此操作,因此在执行此操作后我不需要刷新页面。

rename("C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $pic_name, "C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $temp_name);
rename("C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $avafile, "C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $pic_name);
rename("C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $temp_name, "C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $avafile);

我的问题是在我这样做之后,我从 div 中删除了图像并以新的顺序再次添加它们,但我认为浏览器将图像保存在某处并且不重新加载它们并且它们以相同的顺序出现。只有在我刷新页面后,它们才会以正确的顺序出现。有没有办法让浏览器再次上传图片?

提前谢谢你,丹尼尔!

编辑:这是 ajax 函数:

function avaPic(offer_id, pic_name, onFinish) {
    var request;
    if(window.XMLHttpRequest)
        request = new XMLHttpRequest();
     else
        request = new ActiveXObject("Microsoft.XMLHTTP");

    request.onreadystatechange = function() {
        if (request.readyState == 4 && request.status == 200) {
            onFinish();
        }
    }

    request.open("GET", "php/script.php?action=avaPic&offer_id=" + offer_id + "&pic_name=" + pic_name, true);
    request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    request.send();
}

这是php:

if($action == "avaPic") {
        $offer_id = $_GET["offer_id"];
        $pic_name = $_GET["pic_name"];
        $filearray = getDirectoryList("C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/");
        $avafile = $filearray[0];
        $temp_name = "temp.jpg";

        rename("C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $pic_name, "C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $temp_name);
        rename("C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $avafile, "C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $pic_name);
        rename("C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $temp_name, "C:/wamp/www/invest/Coded/oferte/" . $offer_id . "/" . $avafile);
    }

在 onFinish 功能上,我用图像刷新 div,希望它们以新的顺序重新排序,但它们看起来和以前一样,直到我刷新页面

我找到了,如何强制浏览器重新加载图像。

<div>
       <img src="img1.jpg" />
       <img src="img2.jpg" />
       <img src="img3.jpg" />
</div>

相反,我必须生成一个带有时间参数的 html 代码,以使浏览器重新加载图像。像这样<img src='"img1.jpg?" + d.getTime()' />

4

1 回答 1

0

检查这是否解决了您的问题,如果您有这样的 HTML,

        <div>
           <img src="abc.jpg" />
           <img src="abc.jpg" />
           <img src="abc.jpg" />
        </div>

只需在您的 ajax 调用后运行此 jquery

        $('div img').attr("src",$('img').attr("src")+"?+"Math.random())
于 2012-04-09T11:16:57.527 回答