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

将jQuery表单序列化数据发布到php,php,jquery,forms,post,Php,Jquery,Forms,Post,我试图将一个序列化数据从jQuery发布到php,如下所示 $.post(location.href, $('form').serialize(), function(data){ // do something }); 它工作得很好。但是有没有一种方法可以为序列化数据设置一个名称,这样我就可以将该名称用于isset()函数?看起来是这样的: <input type="text" name="inputs[data][1]"> <input type="text" n

我试图将一个序列化数据从jQuery发布到php,如下所示

$.post(location.href, $('form').serialize(), function(data){
    // do something
});
它工作得很好。但是有没有一种方法可以为序列化数据设置一个名称,这样我就可以将该名称用于
isset()
函数?看起来是这样的:

<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">
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>

//布局的其余部分
我不想使用按钮提交表单。我不想要它的原因是:

  • 使用
    Submit
    ,然后将表单提交到同一页面,当我在提交表单后刷新页面时(我不想要它),将要求重新提交
  • 在发布后刷新页面时,使用jQuery将序列化数据发布到服务器不会要求重新提交

  • 您可以添加隐藏变量并在post值中检查它

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

    由于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' ] );
        }
    ?>
    
    
    
    我不这么做,因为我的表单有很多输入、选择和/或文本区域。您是否有其他方法获取大量数据?@Lancelot为什么不尝试提供的第一种方法?将数据分组到数组中。我不喜欢这样做,因为第一种方法(在调试/读取代码时)很难想到我实际传递给函数的是哪些数据。然而,我非常感谢你的建议,因为我不知道我可以把它作为一个数组。这实际上是如何工作的?隐藏的输入也将在序列化字符串中。或者你的意思是,隐藏的输入将始终被设置;因此,表单被发布到服务器?我之所以选择这个答案,是因为它对于调试和修改当前代码非常简单。而且效果很好!
    <input type="text" name="input1">
    <input type="text" name="input2">
    
    <?php
        if ( isset( $_POST[ 'input1' ] ) &&
             isset( $_POST[ 'input2' ] ) ){
            helperFunction( $_POST[ 'input1' ], $_POST[ 'ipnut2' ] );
        }
    ?>