Javascript 如何在使用onchange事件提交表单后保留$\u POST?

Javascript 如何在使用onchange事件提交表单后保留$\u POST?,javascript,php,Javascript,Php,我有一个列表视图和网格视图,它们是提交按钮,我有排序选择,如果我单击其中一个选择选项,表单将被提交,但我想保留$u POST值,无论是否单击了列表或网格,因为当我提交表单时,数据将消失 我想要像这样的东西: 在此之前已单击名称和列表 (我改了,但概念是一样的) 我不能删除选择下拉列表的onchange submit,而只需先选择下拉列表,然后提交按钮,因为我需要它与使用新信息加载表单的选项类似 我之所以在onchange上提交,是因为我需要它,因为我用这个提交对我的项目进行排序 我的问题是,我

我有一个列表视图和网格视图,它们是提交按钮,我有排序选择,如果我单击其中一个选择选项,表单将被提交,但我想保留$u POST值,无论是否单击了列表或网格,因为当我提交表单时,数据将消失

我想要像这样的东西: 在此之前已单击名称和列表

(我改了,但概念是一样的)

我不能删除选择下拉列表的onchange submit,而只需先选择下拉列表,然后提交按钮,因为我需要它与使用新信息加载表单的选项类似

我之所以在onchange上提交,是因为我需要它,因为我用这个提交对我的项目进行排序

我的问题是,我怎么能两者兼得?我需要两张表格吗?我需要使用jQuery吗? 还是php将完成这项工作

通过javascript提交后,我保留了option的值,但我不知道如何维护$u POST的值,即单击哪个选项

设置了$u POST值后,如何保持该值,并在排序更改时提交表单

 <form method="post" action="">
    <div id="gridSort">
        <span>View Results As:</span> <span>
        <input type="submit" class="listButtons" name="view" value="List"> </span> <span>
        <input  type="submit" class="resultButtons" name="view" value="Grid"></span>
         <select id="sortSelect" class="sortSelect" size="1" name="sort" onchange="this.form.submit();">
                <option selected>Sort</option>
                <option value="Name">Name</option>
                <option value="PriceLowToHigh">Price - Low</option>
                <option value="PriceHighToLow">Price - High</option>
        </select> 
    </div>
</form>
<script type="text/javascript">
document.getElementById('sortSelect').value ="<?php if(! $_POST['sort']):?>"Sort"<?php  else:  echo $_POST['sort']; endif;?>";
</script>
<?php
if(isset($_POST["view"])):
if($_POST["view"]=="Grid")
{
    echo "Grid clicked";
    echo "<br/>";
}
if($_POST["view"]=="List" )
{
    echo "List clicked";
    echo "<br/>";
}
endif;
?>

将结果查看为:
分类
名称
价格-低
价格-高
document.getElementById('sortSelect')。value=”“Sort”“;

只需在表单中添加一个隐藏字段:

<form method="post" action="">
    <input name="selected_sort" value="<?php echo !empty($_POST['sort']) ? strip_tags($_POST['sort']) : ''; ?>" />
    <input name="selected_view" value="<?php echo !empty($_POST['view']) ? strip_tags($_POST['view']) : ''; ?>" />
    <div id="gridSort">
        <span>View Results As:</span> <span>
        <input type="submit" class="listButtons" name="view" value="List"> </span> <span>
        <input  type="submit" class="resultButtons" name="view" value="Grid"></span>
         <select id="sortSelect" class="sortSelect" size="1" name="sort" onchange="this.form.submit();">
                <option selected>Sort</option>
                <option value="Name">Name</option>
                <option value="PriceLowToHigh">Price - Low</option>
                <option value="PriceHighToLow">Price - High</option>
        </select> 
    </div>
</form>


将结果查看为:
分类
名称
价格-低
价格-高
document.getElementById('sortSelect')。value=“”;

我试图重写你的代码,但你需要用get替换post方法,这将帮助用户尽可能多地刷新引用和页面。

以下是我为像我这样会感到沮丧的人所做的:

<form method="post" action="" id="myform">
    <div id="gridSort">
    <input type="hidden" name="selected_sort" value="<?php echo !empty($_POST['sort']) ? strip_tags($_POST['sort']) : ''; ?>" />
    <input type="hidden" name="selectionList_view" value="<?php echo !empty($_POST['Listview']) ? strip_tags($_POST['Listview']) : ''; ?>" />
   <input  type="hidden" name="selectionGrid_view" value="<?php echo !empty($_POST['Gridview']) ? strip_tags($_POST['Gridview']) : ''; ?>" />
        <span>View Results As:</span> <span>
        <input type="submit" class="listButtons" name="Lisview" value="List"> </span> <span>
        <input  type="submit" class="resultButtons" name="Gridview" value="Grid"></span>
         <select id="sortSelect" class="sortSelect" size="1" name="sort" onchange="this.form.submit();" >
                <option selected>Sort</option>
                <option value="Name">Name</option>
                <option value="PriceLowToHigh">Price - Low</option>
                <option value="PriceHighToLow">Price - High</option>
        </select> 
    </div>
</form>
<script type="text/javascript">
document.getElementById('sortSelect').value ="<?php if(! $_POST['sort']):?>"Sort"<?php  else:  echo $_POST['sort']; endif;?>";
</script>
<pre>
<?php print_r($_POST); ?>
</pre>


带隐藏表单的数据也会消失没关系有什么区别?它不会消失,它将与表单一起提交,并且可以通过以下方式访问:
if(!empty($_POST['selected_sort']]| |!empty($_POST['view']){//do something}
不,不会的。你没有听清楚我说的话。首先,它不是隐藏的。如果你想隐藏,你应该说type=“hidden”第二,当你通过onchange提交表单时,数据将丢失!!!即使是隐藏的,也没有区别!它只会影响排序并显示排序值,因为我自己以前用JavaScript维护过它。我更改了你的代码,我意识到你基本上是对的,但我更改了很多,不过谢谢你的帮助,我也发布了我的答案
<form method="post" action="" id="myform">
    <div id="gridSort">
    <input type="hidden" name="selected_sort" value="<?php echo !empty($_POST['sort']) ? strip_tags($_POST['sort']) : ''; ?>" />
    <input type="hidden" name="selectionList_view" value="<?php echo !empty($_POST['Listview']) ? strip_tags($_POST['Listview']) : ''; ?>" />
   <input  type="hidden" name="selectionGrid_view" value="<?php echo !empty($_POST['Gridview']) ? strip_tags($_POST['Gridview']) : ''; ?>" />
        <span>View Results As:</span> <span>
        <input type="submit" class="listButtons" name="Lisview" value="List"> </span> <span>
        <input  type="submit" class="resultButtons" name="Gridview" value="Grid"></span>
         <select id="sortSelect" class="sortSelect" size="1" name="sort" onchange="this.form.submit();" >
                <option selected>Sort</option>
                <option value="Name">Name</option>
                <option value="PriceLowToHigh">Price - Low</option>
                <option value="PriceHighToLow">Price - High</option>
        </select> 
    </div>
</form>
<script type="text/javascript">
document.getElementById('sortSelect').value ="<?php if(! $_POST['sort']):?>"Sort"<?php  else:  echo $_POST['sort']; endif;?>";
</script>
<pre>
<?php print_r($_POST); ?>
</pre>