繁体   English   中英

有没有办法使用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中?

我想更好的问题是,当表单动作中使用的filter.php获取信息时,来自ajax的变量名称是什么? 现在我只使用_POST变量并将其设置为等于我的新数组名称。

$('#optionsForm').submit(function() {

    $.ajax({
        url: this.action,
        type: "POST"
        data: $(this).serialize(),
        // ...
        // add success/complete/error handlers
    });
    return false;

});

.serialize()将格式化数据,就像它是使用提交按钮提交的标准表单一样。

单击您的提交按钮将执行此ajax并阻止默认的表单操作。

如果您不喜欢jQuery序列化数据的方式,您可以在POST到服务器之前根据表单值准备自己的有效负载。 您应该可以根据需要格式化数据。

你可以简单地使用

$.post("test.php?data1=1&data2=2", function(data) {
   alert("Data Loaded: " + data);
 });

从服务器端,您将需要请求每个可变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM