如何使用.serialize()方法通过AJAX请求将表单值发送到PHP
我正在使用如何使用.serialize()方法通过AJAX请求将表单值发送到PHP,php,jquery,ajax,Php,Jquery,Ajax,我正在使用.serialize()方法序列化表单的值,并在AJAX请求中将它们发送到PHP脚本 我的表格: <form name="myform" action="" method="post" class="form"> <input type="text" name="one" value="" /> <input type="text" name="two" value="" /> <input type="text" na
.serialize()
方法序列化表单的值,并在AJAX请求中将它们发送到PHP脚本
我的表格:
<form name="myform" action="" method="post" class="form">
<input type="text" name="one" value="" />
<input type="text" name="two" value="" />
<input type="text" name="three" value="" />
<input type="submit" name="submit" value="Submit" />
</form>
$( '.form' ).on( 'submit', function( e ) {
$.ajax({
type: 'POST',
url: ajax_url,
dataType: 'json',
data: {
'action': $action,
'querystr': $( this ).serialize()
}...
在我的PHP脚本中,我希望能够像这样做$one=$\u REQUEST['one']
,但当我这样做时,$one
的值是null
为什么
$\u REQUEST['one']
不包含表单输入字段的值?这都在ajax调用中。在“data”属性中,声明发送到PHP的post字段。因此,在您的代码中:
$.ajax({
type: 'POST',
url: ajax_url,
dataType: 'json',
data: {
'action': $action,
'querystr': $( this ).serialize()
}
你申报
$_POST['action']
,及
这就是为什么$\u POST['one']为空-因为它没有被发送/定义等等。在php端
$params = array();
parse_str($_POST['querystr'], $params);
echo $params['one'];
在这种情况下,这不是形式。这是一个ajax请求,您可能想做一个小技巧,您可以说var form=this;然后form.serialize()What
var\u dump($\u请求)代码>输出?您正在将序列化的元素传递到'querystr'元素中,因此不应该首先获取它:$queryst=$\u POST['querystr']编码>,然后解码:$queryst=json\u解码($queryst)代码>然后访问其值<代码>echo$queryst['one']
。另外,正如Su4p所说,您没有正确地序列化在querystr
POST参数中发送的表单数据。因此,您可以通过:$\u POST['querystr']['one']
访问服务器端的'one'
谢谢,我现在正在正确序列化。感谢您的反馈,我选择使用PHP的parse_str
作为我的解决方案。
$params = array();
parse_str($_POST['querystr'], $params);
echo $params['one'];