2012-01-04 145 views
-3

如何使用提交表单和提交后自动返回投射/页面内容来创建一个php页面。提交php表单后自动跳回到页面内容

(有许多行大表)

+5

例子?码?告诉我们你试过了什么?请重新说明这个问题,我不明白你要去哪里,你从哪里来。 – 2012-01-04 20:57:44

+1

请阅读http://stackoverflow.com/faq获取更多关于如何在此论坛发帖的信息。 – 2012-01-04 20:59:35

+0

我在这个表数据库中有一列可能有1400行的数据库。并与浮动div在这个PHP页面上,我可以添加新的行到数据库,如果我在546.row,所以也许在大页面的中间,我添加新的单词数据库,所以整个页面重新加载,我必须滚动下降到546.row(BIG页面的中间):/ – mayoxy 2012-01-04 21:01:35

回答

2

要进入网页的某一部分,可以使用锚。如果您的HTML元素具有ID属性,则可以使用#标签(#)链接到它们。例如,如果你有行的表:

​​

您可以链接使用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如果你想停止执行。

+0

我在一个页面中有全部内容。例如page.php。 :/没有两个文件。可能吗 ? – mayoxy 2012-01-04 21:06:12

+0

@mayoxy这不仅是可能的,但它也建议重定向到同一页面,以避免重新提交表单,当您尝试重新加载页面后立即提交您的表格 – 2012-01-04 21:12:53

+0

@mayoxy是的,我已经把它,因为我误解了你的问题。但是,您仍然需要重定向将URL更改为正确的hashtag。 – 2012-01-04 21:16:00

0

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

例子:

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

并提交重定向到您的网页与大表使用URL像page.html#item-256

+0

好的,以及如何可以自动知道在哪个项目-xx我现在在哪个位置? – mayoxy 2012-01-04 21:10:38

+0

如果每行都有新的表单,则可以将记录标识(例如数据库中用于当前记录的标识)传递给隐藏元素。如果您对所有行都有一个表单,则可以通过javascript将此值传递给某个全局隐藏元素,例如,在textfields上使用onChange事件。 – 2012-01-04 21:19:56

2

后,我不知道浏览器的支持,但有204种HTTP状态,“无内容”。 RFC指出:

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

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

+0

哇,这很漂亮。 [更多信息。](http://benramsey.com/archives/http-status-204-no-content-and-205-reset-content/)。要在PHP中使用,可以使用'header('HTTP/1.1 204 No Content')'。 – 2012-01-04 21:41:30