php - 逗号分隔复选框 $_GET 使用 jquery 的查询请求

标签 php jquery

尝试使用多个复选框创建搜索功能,但似乎只能查找与 $_POST 请求相关的信息。

<input type="checkbox" name="fruit" value="1">
<input type="checkbox" name="fruit" value="2">
<input type="checkbox" name="fruit" value="3">
<input type="checkbox" name="fruit" value="4">
<input type="checkbox" name="fruit" value="5">

让查询看起来像这样的最佳方法是什么

search?fruit=1,2,3,4

有没有办法做到这一点非ajax?

只是为了澄清...

每个值代表不同的水果。

本来我是这么做的

search?apple=1&orange=1

当我添加更多复选框时,查询似乎效率低下。

我知道我可以使用 $_POST 方法将复选框添加到数组中

<input type="checkbox" name="fruit[]" value="1">
<input type="checkbox" name="fruit[]" value="2">

正如一些人建议的那样,使用此技术进行 $_GET 查询看起来像这样

search?fruit[]=1&fruit[]=2&fruit[]=5

所以问题实际上是如何清理它(逗号分隔)

最佳答案

注意: 正如其他人所指出的,没有必要传递带有逗号分隔值的单个参数来在服务器上以数组或逗号分隔值结束。像 PHP 这样的框架可以处理这个问题,而不需要 JavaScript。您只需为每个复选框指定相同的“名称”属性即可。这将导致多个同名参数被传递到服务器,这很好。事实上,如果您使用 <select multiptle="multiple"> 会得到相同的结果。元素。

在 PHP 中,如果您使用末尾带有方括号的名称,例如 fruit[] ,然后您可以使用以下命令在服务器上获取数组:

$_GET['fruit']

如果您想在服务器上使用逗号分隔值,可以使用:

implode(',', $_GET['fruit'])

但是,如果您确实想要一个带有逗号分隔值的参数,可以按以下方法操作:

您可以使用带有隐藏输入的表单。将表单的“方法”设置为 "get"隐藏输入的“名称”为 "fruit" 。然后添加一个事件处理程序,在提交表单时将隐藏输入的值设置为逗号分隔的字符串。

HTML:

<form id="fruitForm" action="search" method="get">
<input type="hidden" name="fruit" />
<label><input type="checkbox" value="1" />apple</label><br />
<label><input type="checkbox" value="2" />banana</label><br />
<label><input type="checkbox" value="3" />orange</label><br />
<label><input type="checkbox" value="4" />pineapple</label><br />
<label><input type="checkbox" value="5" />grapefruit</label><br />
<button type="submit">submit</button>
</form>

JQuery:

$('#fruitForm').submit(function() {
    var fruits = $('#fruitForm').find('input:checkbox:checked').map(function() {
        return $(this).val();
    }).get().join(',');

    $('#fruitForm').find('input[name=fruit]').val(fruits);
});

注意:复选框元素没有“name”属性,因此它们不会包含在表单提交中。

jsfiddle

关于php - 逗号分隔复选框 $_GET 使用 jquery 的查询请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21617930/

相关文章:

php - WordPress 网站加载时显示错误

php - Laravel 5.0 用户 Eloquent 模型 mock

jQuery $.each() - 对象数组

javascript - 使用jquery设置输入元素的值

php - PHP和MySQL的时差

php - 无法在我的工作开发机器上远程访问 MySQL

php - 如何通过 PHP 设置文本框的值?

javascript - 动态创建 div 后显示/隐藏

javascript - 将 window 和 undefined 传递给立即调用的匿名函数。为什么?

javascript - jquery不会更新动态生成的html