我有一个包含动态创建的复选框的表单,用于过滤要显示的数据:
$html .= "<form id='optionsForm'action='filter.php' method='post'>";
foreach($selectValues as $key => $value){
$title=new MODEL'String($key);
$html.= "<fieldset class='optionsBox'>";
$html.= "<legend>".$title->friendlify()."</legend><br/>";
foreach($value as $option){
$html .= "<input type='checkbox' name='".$key."[]' value='$option'>".htmlspecialchars($option)."</input>";
}
$html.= "</fieldset>";
}
$html .= "</select><input type='submit' value='submit'></form></div>";
这将构建包含复选框值的多个数组,例如
name =>
[0] value1
[1] value2
newname =>
[0] value1
[1] value2
一旦提交,数组将被传递给php函数,该函数将它们分开,然后使用数据运行查询。
我的问题是,当我使用一个jQuery .ajax
函数序列化数据,我不能用我想要的方式工作。
使用相同表单操作的最简单方法是什么?我必须处理表单,但结果显示在复选框下方的div
中?
我想更好的问题是,当过滤器。php这是在表单操作中使用的信息得到什么是变量名将是当它来自ajax?现在我只是使用_POST变量并设置它等于我的新数组名
如果您不喜欢jQuery序列化数据的方式,您可以在POST到服务器之前根据表单值准备自己的有效负载。您应该能够按照自己的意愿对数据进行格式化。
$('#optionsForm').submit(function() {
$.ajax({
url: this.action,
type: "POST"
data: $(this).serialize(),
// ...
// add success/complete/error handlers
});
return false;
});
.serialize()
将格式化数据,就好像它是一个标准的表单提交与提交按钮。
单击提交按钮将执行此ajax并阻止默认表单操作。
你可以直接使用
$.post("test.php?data1=1&data2=2", function(data) {
alert("Data Loaded: " + data);
});
从服务器端,您需要请求每个变量