JQUERY传递的数据奇怪的$ _REQUEST行为

时间:2013-03-13 00:22:33

标签: jquery request

我将数据与Jquery一起传递给一个php文件,所有这些似乎都运行良好,除了$ _REQUEST数组包含一个让我失望的额外项目。

这是表格:

<form id = "filter">
 <input class="hook1" type="checkbox" value="115" name="0"> bla blah <br >
 <input class="hook1" type="checkbox" value="116" name="1"> blah blah      <br >
 <input class="hook1" type="checkbox" value="107" name="2"> stil blah blah 
</form> 

这是Jquery:

 <script>
 $(document).ready(function(){  
 $("#filter").change(function()
 {
var str = $("#filter").serialize();

 alert( str );

 $.ajax({
        url: "filter_trim.php",
        type: "POST",
    dataType:"json",
       data: str,
       success: function(data){
            // do something with returned data
        }
 });
 });
 });
 </script>

使用Firebug的var_dump($ _ REQUEST)正在使用Firebug的控制台打印2个选中框的情况。 VAR_DUMP($ _ REQUEST)= array(3){       [1] =&GT;       string(3)“116”       [2] =&GT;       string(3)“107”       [ “SQLiteManager_currentLangue”] =&GT;        string(1)“2”

我不知道这最后一项来自哪里。可能是正常的,我现在才看到它,因为这是我第一次传递一系列数据。

php文件filter_trim.php就像这样启动。正如您所看到的,我必须使用array_pop()来消除$ _REQUEST数组中不需要的最后一项。

<?php
 $connect = mysql_connect("localhost", "root", "root");
 mysql_select_db("cars");
 $trimids = array();
 var_dump($_REQUEST);

 array_pop($_REQUEST);
 $trimids = $_REQUEST;
 $trimids = implode(",", $trimids);

我感谢任何意见。

由于

1 个答案:

答案 0 :(得分:1)

您应该考虑为复选框指定一个名称,这样,当您序列化表单时,您将获得一个更易于使用的关联数组,如下所示:

<form id = "filter">
 <input name="hooks[0]" class="hooks0" type="checkbox" value="115">  bla blah <br >
 <input name="hooks[1]" class="hooks1" type="checkbox" value="116"> blah blah      <br >
 <input name="hooks[2]" class="hooks2" type="checkbox" value="107"> stil blah blah 
</form> 

然后,在你的PHP中:

 $connect = mysql_connect("localhost", "root", "root");
 mysql_select_db("cars");

 $trimids = is_array($_REQUEST['hooks']) ? $_REQUEST['hooks'] : array();