将jQuery表单序列化数据发布到php

时间:2013-11-28 08:00:11

标签: php jquery forms post

我正在尝试将jQuery中的序列化数据发布到php,如下所示。

$.post(location.href, $('form').serialize(), function(data){
    // do something
});

它运作良好。但有没有办法可以为序列化数据设置名称,所以我可以将该名称用于isset()函数?它看起来像这样:

我们假设表格有

<input type="text" name="input1">
<input type="text" name="input2">

file.js

$.post(location.href, {data:$('form').serialize()}, function(data){
    // do something
});

file.php

<?php
    if (isset($_POST['data'])) {
        // retrieve the data in the serialized string and use it in a function
        helperFunction($_POST['input1'], $_POST['input2']);
    }
?>

<html>
    // rest of the layout
</html>

我不想使用按钮提交表单。我不想要它的原因是:

  1. 使用<button type="submit">Submit</button>,然后在我提交表单后刷新页面(我不想要它)时,将表单提交到同一页面会要求重新提交。
  2. 在我发布后刷新页面时,使用jQuery将序列化数据发布到服务器不会要求重新提交。

2 个答案:

答案 0 :(得分:2)

您可以添加隐藏变量并在后期值中进行检查。

<input type="hidden" name="check_val" value="chek_val" />
<?php

if(isset($ _ POST ['check_val'])){

} ?&GT;

答案 1 :(得分:1)

由于PHP从提交的POST数据中解析数组,您可以像这样操作:

<input type="text" name="inputs[data][1]">
<input type="text" name="inputs[data][2]">

<?php
    if( isset( $_POST[ 'inputs' ][ 'data' ] ) ) {
        helperFunction( $_POST[ 'inputs' ][ 'data' ][ '1' ], $_POST[ 'inputs' ][ 'data' ][ '2' ] );
    }
?>

但实际上我没有看到为什么不做更简单的原因:

<input type="text" name="input1">
<input type="text" name="input2">

<?php
    if ( isset( $_POST[ 'input1' ] ) &&
         isset( $_POST[ 'input2' ] ) ){
        helperFunction( $_POST[ 'input1' ], $_POST[ 'ipnut2' ] );
    }
?>