【发布时间】:2017-03-11 21:11:20
【问题描述】:
我想使用以下表单来过滤我网站上的产品:
<div class="top-filter-select-container">
<form method="GET" action="" id="sort-filter-pick">
<select class="selectpicker" id="sort-filter">
<option value="popularity">Sort by Popularity</option>
<option value="ratings">Sort by Ratings</option>
<option value="newest">Sort by Newest</option>
<option value="lowest">Sort by Lowest Price</option>
</select>
</form>
</div>
当使用 jQuery form.submit() 选择一个选项时,我试图重新加载我的页面,并检索所选选项以用于使用 SQL 查询进行过滤。我最终希望将此值与其他过滤值一起用于更复杂的过滤。
$(function(){
$('#sort-filter').on('change', function() {
var action = $(this).val();
$("#sort-filter-pick").attr("action", "?sort=" + action);
this.form.submit();
});
});
为了测试我的代码,我只是想echo isset($_GET['sort']) ? $_GET['sort'] : null;
如果我将form method 更改为POST 而不是GET,则代码有效,但不适用于GET。在亚马逊等网站上,在从选择选项应用过滤器时使用GET form 方法,但我也注意到?sort=... 在提交表单后添加到页面URL,情况并非如此如果我使用GET,对我来说。我想知道做同样事情的正确方法是什么。
【问题讨论】:
-
GET 的值不会在表单正文中传递,它们作为 url 参数传递
-
那么如何将我的操作添加到 URL 中?我想这是我的主要问题
-
在 onchange 事件中执行 ajax 请求或重新加载页面
-
因为选择框没有名称属性,所以无法正常工作
-
Ryan,这不是
$("#sort-filter-pick").attr("action", "?sort=" + action);应该做的吗?