隐藏页面在重新加载时已发送表单的事实

时间:2013-09-12 11:43:15

标签: php jquery forms

我使用表单将图片ID提交到另一个页面。我做了这个而不是通过网址,因为它使网址更干净。但是,当用户现在重新加载时,它会询问是否要再次提交表单。他们不知道他们已经提交了一份表格,只要他们知道他们只是点击了一张图片并被带到了一个显示该图片更大的页面。

有什么方法可以保存隐藏表单字段通过表单发送的图像ID,还是为用户刷新页面?

HTML

<a class="gallery-img span4 js-img-submit" href="#">
   <img src="img.jpg"/>
   <form action="/image" method="post">                                
     <input type="hidden" value="<?=$img['id']; ?>" name="image_id"/>
   </form>
</a>

JQUERY

$('.js-img-submit').click(function(){           
        $(this).find('form').submit();            
 })

PHP

$image_id = isset($_POST['image_id']) ? $_POST['image_id'] : false; 

2 个答案:

答案 0 :(得分:0)

不知何故,该参数需要发送到图片页面。

  • GET:你不想要那个。
  • POST:您使用它,但会导致刷新问题。
  • 会话:当他打开多张图片,然后刷新第一页时,会隐藏,但会造成麻烦。

所以,我想以下几点:

使用#标签,然后通过javascript加载图像。最后删除标签:

的MainPage:

<a class="gallery-img span4 js-img-submit" href="/image#<?=$img['id']; ?>">
   <img src="img.jpg"/>
</a>

ImagePage:

<script language="javascript">
$(document).ready(function(){
   var imgid = document.location.hash.slice(1);
   document.location.hash = ""; //Remove
   loadImage(imgid);
})
</script>

loadImage然后需要是必需的javascript函数。

用户可能会暂时注意到它。如果不允许用户查看,那么你唯一的办法就是为每个打开的图像窗口使用带有单独变量的PHP Session。

答案 1 :(得分:0)

您可以这样做:

$('.js-img-submit').click(function()
{           
    $.post("image.php", {id: $(this).find('input').val()});                
})