从 serialize() AJAX 获取 PHP 中的多个/多个 POST 变量的最佳方法是啥?

Posted

技术标签:

【中文标题】从 serialize() AJAX 获取 PHP 中的多个/多个 POST 变量的最佳方法是啥?【英文标题】:What is the best way to obtain many/multiple POST variables in PHP from serialize() AJAX?从 serialize() AJAX 获取 PHP 中的多个/多个 POST 变量的最佳方法是什么? 【发布时间】:2018-04-25 11:10:16 【问题描述】:

我有一个包含许多输入的表单,我使用以下代码将所有表单数据发送到 php proccesing:

HTML:

<form>
<input type="text" name="a" />
<input type="text" name="b" />
<input type="text" name="c" />
<input type="text" name="d" />
<input type="text" name="e" />
<input type="text" name="f" />
<button type="button" onclick="update()">UPDATE</button>
</form>

<!-- HERE I SHOW THE VALUES FROM ABOVE INPUTS -->
<input type="text" id="a" />
<input type="text" id="b" />
<input type="text" id="c" />
<input type="text" id="d" />
<input type="text" id="e" />
<input type="text" id="f" />

JS:

<script>
function update()

    var str = $("form").serializeArray();
    $.ajax(  
        type: "POST",  
        url: "update.php",  
        data: str,  
        dataType: 'json',
        success: function(result) 
          
            document.getElementById("a").value = result.a;
            document.getElementById("b").value = result.b;
            document.getElementById("c").value = result.c;
            document.getElementById("d").value = result.d;
            document.getElementById("e").value = result.e;
            document.getElementById("f").value = result.f;
        ,
        error: function(result)
            console.log("Error:");
            console.log(result);
        
    );
    // return false;


</script>

和更新.php:

<?php
$a = $_POST['a'];
$b = $_POST['b'];
$c = $_POST['c'];
$a = $_POST['d'];
$b = $_POST['e'];
$c = $_POST['f'];

$arr = array(
'a' => $a, 
'b' => $b, 
'c' => $c,
'a' => $d, 
'b' => $e, 
'c' => $f
);

echo json_encode($arr);

?>

    第一个问题: 是否有一种简单的方法可以在 PHP 中传递所有 serialize() 变量,而不是像我在代码中那样编写所有变量?太多了,我认为我必须手动添加所有这些是不行的。

     $a = $_POST['a'];
     $b = $_POST['b'];
     $c = $_POST['c'];
     $d = $_POST['d'];
     $e = $_POST['e'];
     $f = $_POST['f'];
    

    有没有一种捷径可以在多个输入中从 PHP 传递 ajax 结果数组值,而不是使用以下代码?

document.getElementById("a").value = result.a;
 document.getElementById("b").value = result.b;
 document.getElementById("c").value = result.c;
 document.getElementById("d").value = result.d;
 document.getElementById("e").value = result.e;
 document.getElementById("f").value = result.f;

我只想说我在表单上有太多输入,我不想手动添加这些变量。这需要太多时间,而且在获取 id 和名称时很容易出错。

【问题讨论】:

【参考方案1】:

您可以将表单输入作为数组而不是个人名称传递。含义

<input name='form[a]' type='text'/>
 <input name='form[b]' type='text'/>
 <input name='form[c]' type='text'/>
 <input name='form[d]' type='text'/>

然后在php中这样做

echo(json_encode($_POST['form']));

【讨论】:

我会试一试的。谢谢。

以上是关于从 serialize() AJAX 获取 PHP 中的多个/多个 POST 变量的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

玩转web之ajax---使用表单的serialize()方法中文乱码解决

从 AJAX 调用获取字段数据时遇到问题

如何使用 ajax 传递 from.serialize() 和数组值?

js 获取表单内容

ajax提交form表单

关于$("form").serializeObject()与$("form").serialize()