图片上传后,php页面刷新无法正常工作

时间:2014-11-13 08:33:42

标签: javascript php jquery html5

用户上传个人资料图片后,如何自动刷新页面? 一旦用户刷新页面,图片就会更新,但我想强制自己刷新页面。

我正在上传文件并更新我的数据库:

$query="UPDATE users set image='".$username_db."_n.gif' where user_name='$username_db'";
mysqli_query($con,$query);

在此之后,我想要一个刷新代码。

我尝试了几种方法:

echo "<script type='text/javascript'>$('.display_picture_image').attr('src',    '".$src."?".time()."');<scipt>";
exit;

其中 .display_picture_image 是我想要显示图片的图片标记。

echo "<meta http-equiv='refresh' content='0'>"
exit;

然后

header("Refresh:0");
exit();

然后

header("Location:".$_SERVER[REQUEST_URI]);
exit();

然后

header("Location:page_name.php");
exit();

然后

echo "<script type='text/javascript'>location.reload();</script>";

但没有任何效果。我做错了什么?

我有一个页面:index.php。它包含自我引用形式的表单。

if(isset($_POST['submit'])
    include 'upload.php';

提交照片后,来自

的代码
upload.php

已执行。然后上传图片,然后

echo '<script type="text/javascript">$(window).on("load",function(){window.top.window.showcrop("'.$target_file.'","'.$username_db.'","'.$imageFileType.'");});</script>';

在标题中链接的js文件中调用函数showcrop。

然后在选择并提交裁剪区域后执行此操作:

function crop_photo() {
   var x_ = $('#x').val();
   var y_ = $('#y').val();
   var w_ = $('#w').val();
   var h_ = $('#h').val();
   var photo_url_ = $('#photo_url').val();
   var username_ = $('#username').val();
   var fileTypeImage_ = $('#imageFileType').val();

   // hide thecrop  popup
   $('#popup_crop').hide();

   // display the loading texte
  // crop photo with a php file using ajax call
  $.ajax({
     url: 'crop_photo.php',
     type: 'POST',
     data: {x:x_, y:y_, w:w_, h:h_, photo_url:photo_url_, username:username_,     fileTypeImage:fileTypeImage_, targ_w:TARGET_W, targ_h:TARGET_H},
     success:function(data){
     // display the croped photo
   }
   });
 }

// updateCoords : updates hidden input values after every crop selection
function updateCoords(c) {
   $('#x').val(c.x);
   $('#y').val(c.y);
   $('#w').val(c.w);
   $('#h').val(c.h);
}

然后执行crop.php,上传裁剪的图片并更新数据库。最后,刷新代码被写入但不起作用。

2 个答案:

答案 0 :(得分:2)

服务器端:

注意:上传文件并更新数据库后放入以下代码:

  header("Refresh: 300;url='REDIRECTION URI'");

浏览器将在300秒后重定向。虽然可以在浏览器的配置中禁用它,但它通常不会被禁用。

客户端:

location.reload();

答案 1 :(得分:0)

好的,所以我自己想出了答案。在我的 crop_photo.php 文件中,

$.ajax({
 url: 'crop_photo.php',
 type: 'POST',
 data: {x:x_, y:y_, w:w_, h:h_, photo_url:photo_url_, username:username_,       fileTypeImage:fileTypeImage_, targ_w:TARGET_W, targ_h:TARGET_H},
 success:function(data){
 // display the croped photo
 }
});

在上面的代码中,我在

中没有提到任何内容
success:function(data){
//display the cropped photo
}

虽然这就是php会回应的东西。 所以我把它编辑为,

success:function(data){
//display the cropped photo
$('#image_div').html(data);
}

通过这个我在php中回应的内容被放入id image_div 的部门中。 然后我回应了

echo '<script>window.location='redirectbackurl.php'</script>';

并重定向到 redirectbackurl.php ,重定向回上一个链接。 我的 redirectbackurl.php

的代码
<?php
   header("Location:".$_SERVER['HTTP_REFERER']);
   exit();
?>

现在我明白了,我可以简单地使用 location.reload(),但由于表单重新提交问题,我这样做了。