Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用.serialize()方法通过AJAX请求将表单值发送到PHP_Php_Jquery_Ajax - Fatal编程技术网

如何使用.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'];