将jQuery表单序列化数据发布到php
我试图将一个序列化数据从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
$.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
,然后将表单提交到同一页面,当我在提交表单后刷新页面时(我不想要它),将要求重新提交您可以添加隐藏变量并在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' ] );
}
?>