2012-04-09 20 views
0

私はアバターのような画像と1枚目の画像を持つウェブサイトで作業しています。私が何をしているのかをアバター(1枚目)に変更したいときはスワップします私がアバターとして使用したい新しいイメージの最初のイメージ名。 私はこれをajax関数で行います。そうした後でページを更新する必要はありません。phpリネームスワップファイル名does not reload image

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から画像を削除し、私は新しい順に再びそれらを追加し、私はブラウザがどこかに画像が保存されますと思いますし、それらをリロードいけないと、彼らは同じに見える、ということです注文。ページを更新した後にのみ、正しい順序で表示されます。 ブラウザに画像を再度アップロードさせるソリューションはありますか?

ありがとう、ダニエル!

EDIT:これは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です:onFinish機能の

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

、私は彼らが再び並べ替えを期待しての画像のwihのdivを更新します私はページをリフレッシュするまで、以前と同じように見えます。

ブラウザを強制的に再読み込みする方法が見つかりました。

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

この代わりに、ブラウザで画像を再読み込みするには、時間パラメータを使用してhtmlコードを生成する必要があります。この<img src='"img1.jpg?" + d.getTime()' />

+0

後、このjqueryのを実行している場合イメージタグマークアップを生成するコードを変更して、srcを別のファイル名に設定する必要があります。ファイルの名前を変更することは、これを行うには本当に悪い方法です。 – GordonM

+0

あなたはより具体的なplsすることができます、私はあなたの考えを理解できませんでした。私はフォルダ内にex:img1.jpg、img2.jpg、img3.jpg、1stはアバター(img1.jpg)です。私がアバターをimg3.jpgに変更したいのであれば、私はimg3.jpgとimg3.jpgを入れ替えようとしていたので、img3.jpgはアバターの最初のイメージになります。問題は画像が同じ名前になっているので、ブラウザはバックグラウンドでロードされているので、ブラウザはそれらをリロードしないと思う。どのように私はこれを達成することができたの別の解決策を見つける場合、それは歓迎されます:) –

+0

あなたはあなたが使用しているJavaScriptコードを投稿することができますか? – Ben

答えて

0

チェックこれはあなたの問題を解決しますよう 表示させたい場合は、このようなあなたのHTML、

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

はちょうどあなたのAJAX呼び出し

 $('div img').attr("src",$('img').attr("src")+"?+"Math.random()) 
+0

これを行う方法があります。すべてのイメージ名を変更して再度読み込む必要があります。しかし、私はそれらに新しい名前を付ける必要があるが同じアルファベット順で同じ順序を持つようにする必要があり、より簡単なアプローチがあると思った –