php - $_GET 不反序列化/从选中的复选框中获取值

标签 php javascript get

我对 $_GET 没有多少经验.我尝试始终使用 POST 方法,因此我可能会遗漏一些明显的东西。

我正在使用一个插件,它通过 GET 方法向服务器发送一个请求,其中的值是用 jQuery 完成的序列化形式 serialize()不合时宜。

通常,至少在使用 $_POST 时是这样,该值将很容易分配给接收 PHP 文件中的工作变量。据我所知,这并没有发生。

它保留其序列化表示。当我试图用 $array = unserialize($string) 反序列化它时, 它给出了 bool(false)返回。

A var_dump($_GET)在接收端举个例子:

array(2) {
  ["hook"]=>
  string(15) "hook%5B2%5D=107"
  ["_"]=>
  string(13) "1364920519074" //This is a serial no. generated by the plugin
}

A var_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() 更改,以适应只能处理硬数字的插件。所以这实际上显示了 2 种不同的方法来从选中的复选框中检索值。我相应地修改了标题。

<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> 

最佳答案

答案涉及错误的假设。隐含的假设:“javascript 已正确发送到 php”是错误的。

PHP接收到字符串“?hook=hook%2b2%2d=107&_=1364920519074”并将其转化为上面显示的数组。

我想到了两个问题:

  • 为什么要使用自定义发送方法而不是像 $.ajax() 这样预定义的发送方法?您是否使用其他框架进行数据传输?
  • aoData.push({name : 'hook', value : str });}, 中提供的 javascript 中 str 的实际内容是什么?

如果没有关于函数 dataTable 和生成的 html 的更多内容,关于这个问题就没什么可说的了。

关于php - $_GET 不反序列化/从选中的复选框中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15770363/

相关文章:

http - REST GET API 的推荐日期格式

html - 浏览器发起的重定向 GET 请求未成功

javascript - 如何合并子子数组并通过子数组索引添加它们的长度?

javascript - 如何在 LokiJS 中添加数据更改监听器?

python - 如果程序返回溢出错误,如何让程序等待?

php - 如何按优先级和日期排序?

php - 使用 Laravel 4 选择 MySQL 中某个时间范围内的记录

php - MySQL 从一个表中选择并检查另一个表是否存在相同的值

php - mysql 触发器的奇怪行为

javascript - 如何使用 Javascript 检测滚动超过页面开头?