2012-04-09 126 views
0

我正在一個網站上有一套圖像和第一個圖像就像一個化身..當我想改變頭像(第一張圖片)我做的是我交換第一個圖像名稱與我想用作頭像的新圖像。 我這樣做的ajax功能,所以我不需要刷新頁面後,我這樣做。php重命名交換文件名不重新加載圖像

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()' />

+0

後只要運行這個jQuery如果你想顯示不同的圖像,那麼您應該更改生成圖像標記標記的代碼,以將src設置爲不同的文件名。重命名文件是這樣做的一個非常糟糕的方式。 – GordonM 2012-04-09 10:02:15

+0

你可以更具體請你,我無法理解你的想法。我有一個文件夾例如:img1.jpg,img2.jpg,img3.jpg和1st是頭像(img1.jpg)。如果我想將頭像更改爲img3.jpg,我正嘗試將名稱img3.jpg與img1.jpg交換,所以img3.jpg將成爲頭像,因此頭像。問題是圖像具有相同的名稱,所以我認爲瀏覽器不會重新加載它們,因爲它們已將其加載到背景中。如果你發現另一個解決方案,我會如何實現這一點,這將是歡迎:) – 2012-04-09 10:07:46

+0

你可以發佈你正在使用的JavaScript代碼? – Ben 2012-04-09 10:26:39

回答

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

有辦法做到這一點,要改變所有的圖像名稱,所以他們需要重新加載,但我需要給他們新的名字,但在相同alfabetical秩序,所以他們有相同的順序,我認爲有一個更簡單的方法 – 2012-04-09 11:28:53