【问题标题】:Posting variable to hidden field is not updating in php将变量发布到隐藏字段未在 php 中更新
【发布时间】:2013-10-05 05:48:51
【问题描述】:

我找到了刚刚在隐藏字段中的提交按钮更新值中添加 onclick 的解决方案。当我获得隐藏字段值时,分页正在显示,并且在分页锚点中,我习惯于在单击 pagin() 时显示分页传递给 pagin 函数的页码,其中我使用 ajax 发布 pageno 和限制问题是我通过 $_POST['limits'] 获取限制的 ajax 数据,但我使用 $_POST['pageno'] 时无法获取 pageno 的值为什么?

for($i=1; $i<=$pages; $i++)
echo '<td id="'.$i.'"><a href="javascript:void(0);" class="pagenav" id="but'.$i.'"  style="cursor: hand;cursor: pointer;font-size:18px" onclick="javascript: pagin('.$i.'); ">'.$i.'</a></td>';} 



<script>
            function pagin(value){
    var f = document.getElementById('pageno').value="";
var option = document.getElementById('mydisplaylimits').value="";
var limits = document.getElementById('limits').value;
var pageno = document.getElementById('pageno').value = +value;

        $.ajax({
  type: "POST",
  url: "page.php",
  data: {
       limits: limits,
 pageno: pageno
    },
  success: function() {


  } 
});
    }
    //-->
    </script>


<form action="page.php" method="post" id="pagination" name="pagination">
    <input type="HIDDEN" value=""  id ="limits" name="limits">
    <input type="HIDDEN" id="pageno" value="" name="pageno">
    <select style="border: 2px outset rgb(204, 51, 0);" size="1" name="mydisplaylimit" id="mydisplaylimit" >
    <option value="5" selected="selected" id="mydisplaylimits"  >5</option>
    <option value="10" id="mydisplaylimits"  value="10" >10</option>
    <option value="20"  id="mydisplaylimits"  >20</option>
    <option value="50" id="mydisplaylimits"    >50</option>
    </select><input type="SUBMIT" value="GO"  style="border: 2px outset rgb(204, 51, 0);" class="form_enter" onclick="$('#limits').val($('#mydisplaylimit').val())"></form>

【问题讨论】:

  • 如果你想在不刷新的情况下发帖,你必须使用 AJAX。顺便说一句,ID 必须是唯一的,id="mydisplaylimits" 不能有多个元素。
  • 确实,事实上我从未在选择“选项”中看到 ID 字段,而且我很确定选项甚至不支持 id 字段,尽管我可能弄错了。另外,这个问题很难理解。
  • @Barmar 我用过 var pageno = document.pagination.pageno.value =+value; document.pagination.submit();但它会提交下拉默认值。

标签: php post get request hidden-field


【解决方案1】:

我不明白您为什么需要隐藏输入。只需将&lt;select&gt; 中的默认选项设置为发布的值即可。

<form action="page.php" method="post" id="pagination" name="pagination">
    <input type="HIDDEN" id="pageno" value="" name="pageno">
    <select style="border: 2px outset rgb(204, 51, 0);" size="1" name="mydisplaylimit" id="mydisplaylimit">
<?php
$default_limit = isset($_POST['mydisplaylimit']) ? $_POST['mydisplaylimit'] : 5;
foreach (array(5, 10, 20, 50) as $option) {
    ?>
    <option value="<?php echo $option ?>" <? if($option == $default_limit) { echo "selected"; } ?> >
    <?php
}
?>
    </select>
    <input type="SUBMIT" value="GO"  style="border: 2px outset rgb(204, 51, 0);" class="form_enter">
</form>

【讨论】:

    【解决方案2】:

    很难理解您的问题在问什么。但是,我已经使用了您的代码并对其进行了一些整理。我相信还有更多可以轻松进行的改进。

    将其移动到页面的头部 HEAD 区域而不是正文。

    <?php
    if isset($_POST['mydisplaylimit'])) {
        $mydisplaylimit = $_POST['mydisplaylimit'];
    }
    else {
        $mydisplaylimit = "some default value";
    }
    ?>
    

    您的表单现在应该如下所示。

    <form action="page.php" method="post" id="pagination" name="pagination">
        <input type="HIDDEN" value="<?php echo $mydisplaylimit;?>" id="limits" name="limits">
        <input type="HIDDEN" id="pageno" value="" name="pageno">
        <select style="border: 2px outset rgb(204, 51, 0);" size="1" name="mydisplaylimit" id="mydisplaylimit">
        <option value="5" selected="selected">5</option>
        <option value="10">10</option>
        <option value="20">20</option>
        <option value="50">50</option>
        </select>
        <input type="SUBMIT" value="GO"  style="border: 2px outset rgb(204, 51, 0);" class="form_enter">
     </form>
    

    【讨论】:

    • 当我提交表单并获取隐藏字段的值作为 $_post['limits'] 它在 var_dump 中显示为零,因为我第二次按下提交按钮表单它获得了值。是的,我什至有试过上面的方法,结果是一样的震颤
    • 第一次打开页面时,$_POST 中没有值,因为您还没有提交表单。因此,在您第一次提交之前,不会将任何内容放入隐藏字段。
    • @Barmar 那么我如何在第一次提交时获得价值?我在选择中使用了 onchange="$('#limits').val($('#mydisplaylimit').val()) 并且它得到了更新,但问题是默认值在隐藏字段中没有得到更新,因为我们在 select 中使用了 onchange 方法。我的疑问是如何获取下拉框的默认值。抱歉英语不好
    • 如果你用它开始一个新问题,我会发布一个答案。我不会在这里发布它,因为它不是这个问题的答案。
    猜你喜欢
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    相关资源
    最近更新 更多