我将数据与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);
我感谢任何意见。
由于
答案 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();