我没有太多经验$_GET
。我尝试总是使用 POST 方法,所以我可能会遗漏一些明显的东西。
我正在使用一个插件,它通过 GET 方法向服务器发送一个请求,其值是用 jQueryserialize()
从表单中完成的序列化表单。
通常,至少在使用 时$_POST
,该值可以很容易地分配给接收 PHP 文件中的工作变量。据我所知,这并没有发生。
它保持其序列化表示。当我尝试使用 反序列化它时$array = unserialize($string)
,它bool(false)
返回了。
接收端的 Avar_dump($_GET)
举个例子:
array(2) {
["hook"]=>
string(15) "hook%5B2%5D=107"
["_"]=>
string(13) "1364920519074" //This is a serial no. generated by the plugin
}
在类似情况下, Avar_dump($_POST)
将直接显示值“107”,这正是我要寻找的。
我感谢您的帮助。
这是Javascript:
$(document).ready(function () {
var str;
oTable = $("#myTable").dataTable({
"fnServerParams": function (aoData) {
aoData.push({
name: 'hook',
value: str
});
},
});
$("#filter").change(function () {
str = $("#filter").serialize();
oTable.fnReloadAjax("filter_prange.php");
});
});
为了将来参考,我在 Scones 的评论后展示了修改后的脚本。因此解决方案是返回原始 php 文件并更改检索值的方式。从表单中获取值的方法从serialize()更改为适应插件,它只能处理硬数字。所以这实际上显示了从选中的复选框中检索值的两种不同方式。我相应地修改了标题。
<script>
$(document).ready(function() {
var str = [];
oTable = $("#myTable").dataTable({
"fnServerParams": function (aoData) {
aoData.push({ name:'str', value:str });}
});
$("#filter").change(function(){
str=[];
$('#filter :checked').each(function() {
str.push($(this).val());
});
oTable.fnReloadAjax("filter_prange.php");
});
});
这是触发这一切的形式:
<form id = "filter">
<input class="hook1" type="checkbox" value="115" name="hook[0]">
<input class="hook1" type="checkbox" value="116" name="hook[1]">
<input class="hook1" type="checkbox" value="107" name="hook[2]">
</form>