0

私は一連の画像を含む Web サイトで作業しており、最初の画像はアバターのようなものです。アバター (1 番目の画像) を変更したい場合、最初の画像の名前を新しい画像に置き換えます。アバターとして使用します。私は 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 に答える