【问题标题】:Hide the fact a page has been sent a form on reload隐藏页面已在重新加载时发送表单的事实
【发布时间】:2013-09-12 11:43:14
【问题描述】:

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

有没有办法解决这个问题,保存隐藏表单字段通过表单发送的图像 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; 

【问题讨论】:

  • @deepu: 它是一个带有post方法的表单。
  • 使用 AJAX 可能对您有所帮助
  • 任何不赞成投票的人都可以在这里说明原因。
  • @Deepu 抱歉,已添加代码
  • 如imsiso所说,使用jQuery.post将id发布到后端

标签: php jquery forms


【解决方案1】:

不知何故需要将参数发送到图像页面。

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

所以,我会这样做:

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

主页:

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

图像页面:

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

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

用户可能会在一瞬间注意到它。如果不允许用户查看,那么您唯一的方法是使用 PHP Session 并为每个打开的图像窗口使用单独的变量。

【讨论】:

  • 这是个好主意。唯一的事情是,我想传递 2 个参数,一个是图像 ID,另一个是,如果图像可以购买,那么理想情况下我想将 true 或 false 传递给脚本
  • 您可以随时扩展您的标签:image.php#1;true;peter;2012,然后使用split() 获取信息。
  • 啊,我不知道oyu可以做到这一点
  • 这种事情用ajax不可能吗?
  • 好吧,你可以通过使用 htaccess 文件并重写像 image/2015/4 或类似的东西来让它看起来“更好”。
【解决方案2】:

你可以这样做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多