1

我正在使用 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]=> 字符串(3) "116" [2]=> 字符串(3) "107" ["SQLiteManager_currentLangue"]=> 字符串(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);

我很感激任何意见。

谢谢

4

1 回答 1

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();
于 2013-03-13T07:04:11.223 回答