jQuery .serialize()是否等效填充$ _POST?

时间:2011-12-16 19:26:35

标签: php jquery post

我有一个使用POST提交的表单,我想将其转换为表单的ajax提交。当我将.submit函数与.ajax函数放在一起时,我将数据序列化时,表单就像只执行POST

一样

一些代码:

<script type="text/javascript">
    $("#optionsForm").submit(function(){
            var data= $("#optionsForm").serialize();
            $.ajax({
                    url: 'filter.php',
                    type: 'post',
                    data: data,
                    success: function(data){
                            alert(data);
                    }
            });
            return false;
    });
</script>

<?php
$html = "";
$html .= "<div id='options'>";
$html .= "<form id='optionsForm' 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>";
 $html .= "<div id='tables'></div>";

我检索数据的地方:

if(!empty($_POST)){
    $filterValue=$_POST;
}
else{
    $filterValue="y";
}

2 个答案:

答案 0 :(得分:0)

使用.submit(function)只是将ajax调用绑定到提交,因此您可能在提交之前离开了页面。您需要将ajax调用绑定到提交按钮上的单击事件(作为示例)并阻止默认提交。

答案 1 :(得分:0)

是的,所有表单变量都是序列化的,并在POST请求中发送,就像表单操作=“post”将提交一样。除了从表单处理脚本传递的输出以及JavaScript应如何处理该输出(即成功或缺少字段X)之外,后端无需更改任何内容