鉴于POST的结果,我如何更改值并重新提交?

时间:2016-10-23 03:58:10

标签: php html

假设我有一个HTML表单,可以让您输入姓名和年龄,并返回一个具有该名称和年龄的人员列表。

<form method="post" action="/search_results">
   <input type="text" name="personName">
   <input type="text" name="personAge">
   <input type="submit" value="Submit!">
</form>

在搜索结果页面上,我有一个结果列表,但我一次只显示50个,并允许用户在带有按钮的页面之间前进/后退。因此,结果页面还会查找已发布的&#39; pageNumber&#39;如果没有,则默认为0。

当他们点击按钮时,我如何重新提交年龄和姓名,并从按钮提交相应的pageNumber?

我使用PHP

3 个答案:

答案 0 :(得分:0)

<form method="post" action="/search_results">
  <input type="text" name="personName" value="<?php echo (isset($formdata['personName'])?$formdata['psersonName']:"") ?>">
  <input type="text" name="personAge" value="<?php echo (isset($formdata['personAge'])?$formdata['personAge']:"") ?>">
  <input type="hidden" name="currentPage" value="<?php echo (isset($formdata['currentPage'])?$formdata['currentPage']:"0") ?>">
  <input type="submit" value="Submit!">
</form>

formdata是前一次提交的输入数据。这些数据应该与search_results页面一起返回。

以下是js

<script>
    $(document).ready(function(){
        $(".paginationBtns").click(function(){
            var page = $(this).attr('pageValue');

            $("input[name='current']").val(page);

            $("form").submit();
        });

    });
</script>

前进和后退按钮的假设

<a href="#" pageValue=0>Back</a><a href="#" pageValue=50>Next</a>

您必须在加载每个页面时附加后面和下一页面值。

答案 1 :(得分:0)

向表单添加隐藏字段:

import sublime
import sublime_plugin
from myplugin.lib.something import Something
from myplugin.lib.something_else import SomethingElse
from myplugin.lib.something_else_else import SomethingElseElse

class MyPluginCommand(sublime_plugin.TextCommand):

添加JavaScript函数以修改隐藏字段值:

<form name=search"" method="post" action="/search_results">
  <input type="hidden" name="pageNumber"
    value="<?php echo isset($_POST['pageNumber']) ? (int) $_POST['pageNumber'] : 0; ?>">
   <input type="text" name="personName">
   <input type="text" name="personAge">
   <input type="submit" value="Submit!">
</form>

为页面按钮应用JavaScript函数:

<script>
function search(pageNumber) {
  var form = document.forms.search;
  if (!form) return;
  form.elements.pageNumber.value = pageNumber;
  form.submit();
}
</script>

显然,应该使用PHP以下列方式生成按钮:

<span onclick="search(1)">1</span>
<span onclick="search(2)">2</span>

答案 2 :(得分:0)

使用包含参数(GET)而非(POST)的简单链接进行分页的最佳做法。这样,当您在网址中有参数时,您可以缓存它,添加到收藏夹,通过谷歌索引,在电子邮件/ Facebook等分享您的页面。

<a href='http://example.com/?personName=<?=$_POST['personName']?>&personAge=<?=$_POST['personAge']?>&page=<?=$next_page_number?>'>Next</a>

如果由于某种原因你必须或者真的想要使用POST,你可以将值保存在页面中表单中的隐藏输入中,然后在单击“下一页”按钮时将其汇总。

表单示例:

注意它只是一个例子,你应该清理变量而不是直接从$ _POST中放入它们

<form name="pagination" method="post" action="/search_results">
    <input type="hidden" name="page" id="page" value="2">
    <input type="hidden" name="personName" value='<?=$_POST['personName'];?>'>
    <input type="hidden" name="personAge" value='<?=$_POST['personAge'];?>'>
</form>

请注意我们设置下一页数字&amp;使用以下形式的命令提交:

<button onclick='document.getElementById("page").value= "2";document.pagination.submit();'>Next page</button>