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


Post jQuery form serialized data to php

我正试图将一个序列化的数据从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将序列化的数据发布到服务器不会要求重新提交

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

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

if(isset($_POST['check_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' ] );
    }
?>