2012-04-09 125 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