2011-05-10 50 views
0

我有我的jQuery代码重新加载页面以反映更改

.ajax({ 
      type: "POST", 
      url: "crop/crop.php", 
      data: dataString, 
      cache: false, 
      success: function(data){ 
       $('#popupMargin').hide(); 
       $('#avatar img').remove(); 
       $('#avatar').load('crop/dp.php'); 
       //$('#avatar').hide(); 

      } 
     }); 

现在

//Codes in the file loaded (`dp.php`) called by jQuery above 

    <?php session_start(); ?> 
    <!-- To display display picture just after croppping --> 
    <img src="users/<?php echo $_SESSION['userId']; ?>/img/dp.jpg" width="150"> 

每当我点击了一个按钮#btn上述AJAX调用。文件crop.php修剪图像并将其保存在与上面中相同的位置和名称中。

所以这意味着,每次用户点击按钮#btn时,图像都会改变。我希望将变更反映为$('#avatar').load('crop/dp.php');在上面的jQuery代码中调用;然而,我不确定旧图像是否显示某种缓存。

​​是否重新加载页面?我如何确保显示的是更改(更新的图像)而不是旧的?

+0

尝试'$ _SESSION'变量的'var_dump'以确保它已更改 – Neal 2011-05-10 16:17:10

回答

1

如果您担心缓存问题,可以将时间戳作为GET参数添加到您的ajax请求中。这通常会强制浏览器下载新的副本。

$('#avatar').load('crop/dp.php?' + (new Date().getTime())); 

此外,如果$ _SESSION [“用户id”]保持请求之间的相同,它不会伤害强制实际JPG的重装了。

<img src="users/<?php echo $_SESSION['userId']; ?>/img/dp.jpg?<?php echo time(); ?>" width="150"> 

希望有所帮助。

+0

重新加载jpg图像直接工作!!谢谢 – ptamzz 2011-05-10 16:44:43

0

尝试使用$_SESSION变量的var_dump以确保它在您的PHP代码中发生了变化。

确保在crop/crop.phpcrop/dp.php都有session_start()位于代码顶部。

+0

会话变量是静态的..没有任何事情要做。你可以假设图像的路径为'users/10/img/dp.jpg'。因此,下次有人点击#btn时,它会重新编写一个新的图像文件。然后,通过我的jquery,我打电话给'$('#avatar')。load('crop/dp.php'。and Im expect that the new image is shown when'.load()'load the dp .php' – ptamzz 2011-05-10 16:29:38

1

我会推荐追加:

'?foo='+Math.random(); 

你的图像路径..它是一个不错的黑客为确保你看到的总是最新版本的文件(例如,通过提供的网址,每个不同的参数时间 - 你保证绕过任何缓存)。

+0

我不能用相同的路径重新加载图像吗?通过ajax重新加载 – ptamzz 2011-05-10 16:30:59

相关问题