我正在使用.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>
我的AJAX请求:
$( '.form' ).on( 'submit', function( e ) {
$.ajax({
type: 'POST',
url: ajax_url,
dataType: 'json',
data: {
'action': $action,
'querystr': $( this ).serialize()
}...
在我的PHP脚本中,我希望能够执行类似$one = $_REQUEST['one']
之类的操作,但是当我这样做时,$one
的值为null
。
为什么$_REQUEST['one']
不包含表单输入字段的值?
答案 0 :(得分:2)
在php结束
$params = array();
parse_str($_POST['querystr'], $params);
echo $params['one'];
答案 1 :(得分:1)
这一切都在你的ajax电话中。在'data'属性中,您声明发送到PHP的post字段。所以在你的代码中:
$.ajax({
type: 'POST',
url: ajax_url,
dataType: 'json',
data: {
'action': $action,
'querystr': $( this ).serialize()
}
你宣布
$_POST['action']
和
$_POST['querystr'].
这就是为什么$ _POST ['one']为空 - 因为它没有发送/定义等。