我正试图将一个序列化的数据从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>
我不想用按钮提交表格。我不想要它的原因是:
- 使用
<button type="submit">Submit</button>
,然后将表单提交到同一页面。在我提交表单后刷新页面时(我不想要它),会要求重新提交 - 当我发布后刷新页面时,使用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' ] );
}
?>