如何使用.serialize()方法通过AJAX请求将表单值发送到PHP

时间:2014-08-01 09:14:08

标签: 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" 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']不包含表单输入字段的值?

2 个答案:

答案 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']为空 - 因为它没有发送/定义等。