有没有一种方法可以使用jQuery和AJAX来发布表单而不需要任何序列化?


Is there a way to use jQuery and AJAX to post a form without any serialization?

我有一个包含动态创建的复选框的表单,用于过滤要显示的数据:

$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);
 });
从服务器端,您需要请求每个变量