【问题标题】:automatically jump back to content of page after submiting php form [closed]提交php表单后自动跳回页面内容[关闭]
【发布时间】:2012-02-02 18:27:01
【问题描述】:

如何使用提交表单制作一个 php 页面,并在提交后自动返回页面的演员/内容。

(多行的大表)

【问题讨论】:

  • 例子?代码?向我们展示您的尝试?请改写问题,我不明白你想去哪里,你从哪里来。
  • 请阅读stackoverflow.com/faq了解更多关于如何在这个论坛上发帖的信息。
  • 我有一个一列的数据库,在这个表数据库中可能有 1400 行。并且在这个 php 页面上使用浮动 div 我可以向数据库添加新行,如果我在 546.row 中,那么可能在大页面的中间我向数据库添加新单词,所以整个页面被重新加载,我必须滚动向下到 546.row(大页中间):/

标签: php html submit return


【解决方案1】:

我不确定浏览器是否支持,但有 204 HTTP 状态,“无内容”。 RFC 规定:

如果客户端是用户代理,它不应该改变导致请求被发送的文档视图。此响应的主要目的是允许输入进行操作,而不会导致用户代理的活动文档视图发生变化,尽管任何新的或更新的元信息都应该应用于当前在用户代理的活动视图中的文档。

这意味着,如果我有一个 HTML 表单并提交它,那么,如果服务器返回 204 状态代码,浏览器不应刷新表单或将我带到另一个页面。

【讨论】:

  • 哇,这真是太棒了。 More info on this page.。要在 PHP 中使用,可以使用header('HTTP/1.1 204 No Content')
【解决方案2】:

要转到页面的某个部分,您可以使用锚点。如果您的 HTML 元素具有 ID 属性,您可以使用主题标签 (#) 链接到它们。例如,如果您有一个包含行的表:

<table>
    <tr id="row-1">...</tr>
    <tr id="row-2">...</tr>
    <tr id="row-3">...</tr>
</table>

您可以使用 yourpage.html#row-2 链接到第 2 行。

在您的 PHP 中,您需要使用正确的行重定向(您可以在同一页面上重定向)。可以使用header修改HTTP头Location,使浏览器重定向。

<?php
    $rowNumber = $_POST['row'];
    header("Location: form.php#row-$rowNumber "); //Same page as the page where this code is
    exit;
?>

请注意,在将任何输出发送到浏览器之前需要使用header,并且PHP 的执行将在header 调用之后继续,因此如果要停止执行,请输入exit

【讨论】:

  • 我在一页中有全部内容。例如 page.php。 :/没有两个文件。有可能吗?
  • @mayoxy 这不仅是可能的,而且还建议重定向到同一页面,以避免在提交表单后尝试重新加载页面时重新提交表单
  • @mayoxy 是的,我提出这个是因为我误解了你的问题。但是,您仍然需要重定向才能将 URL 更改为正确的主题标签。
  • @Xeon06 好的,我明白你的帖子,但是我怎么知道我在提交时是在哪个标签上?我只有一张表格,没有 1400 张表格。每次在页面中心出现一个浮动表单。即使我向下滚动
  • @mayoxy 哦,我想我现在明白了,您只是想准确地回滚到提交之前的位置吗?每当您滚动并想返回该位置时,您的提交按钮(例如“与您同在”)?
【解决方案3】:

每一行都必须有一些 uniq html name 属性,如果您在# 登录您的 url 后使用此名称,浏览器将跳转到它的位置。

例子:

<div name='item-256'>...</div>

在使用page.html#item-256 之类的 URL 提交重定向到带有大表的页面后

【讨论】:

  • 好的,php如何自动知道我现在在哪个item-xxx的哪个位置?
  • 如果您在每一行都有新表单,您可以将记录 ID(例如,数据库中用于当前记录的 ID)传递给隐藏元素。如果您对所有行都有一个表单,您可以通过 javascript 将此值传递给某个全局隐藏元素,例如在文本字段上使用 onChange 事件。
猜你喜欢
  • 2014-08-02
  • 2014-05-26
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 2019-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多