Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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
jqueryajax使用php读取post值_Php_Jquery - Fatal编程技术网

jqueryajax使用php读取post值

jqueryajax使用php读取post值,php,jquery,Php,Jquery,我将以下信息发送到一个php文件。数据包含“一”和“二”一个包含序列化表单,两个包含类似的自定义信息。如何使用php读取这些post值。我希望能够区分1中包含的值和2中包含的值 $('form').submit(function() { x = $(this).serialize(), test = 'testing=whatever&something=else'; $.ajax({ type: 'POST', data: {

我将以下信息发送到一个php文件。数据包含“一”和“二”一个包含序列化表单,两个包含类似的自定义信息。如何使用php读取这些post值。我希望能够区分1中包含的值和2中包含的值

$('form').submit(function() {
     x = $(this).serialize(),
     test = 'testing=whatever&something=else';
    $.ajax({
        type: 'POST',
        data: {'one':x, 'two':test}
        ...
    })
})
在php中,我如何以这样的方式读取值

$one = $_POST['one'];
foreach($one as $key=>$value){ $message.= $key.": ".$value."\r\n"; }

您需要取消
submit

$('form').submit(function(e) {
  e.preventDefault();
     x = $(this).serialize();
     test = 'testing=whatever&something=else';
    $.ajax({
        type: 'POST',
        data: {one:x, two:test}
        ...
    })
})
在php方面

$one = $_POST['one'];
$two = $_POST['two'];
更新:

我不是很精通php,但我认为以下几点应该可以

$one = $_POST['one'];
$two = $_POST['two'];

$cols = explode("&", $one);
foreach($cols as $col) {
    $key_values = explode("=", $col);
    $key = urldecode($key_values[0]);
    $values = urldecode(key_values[1]);
}
echo $key, $values;

我不确定您想对表单(x)的序列化版本做什么,但您可以像往常一样使用$\u POST访问接收PHP脚本中的两个变量,然后可能使用parse\u str()将“test”分解为各种参数,但我质疑,为什么您选择这条路线,而不是将参数分解并作为数据参数中的单个参数传递:

data: {'testing' : whatever, 'something' : else}

如果表单包含复选框或RadioBox(输入名称相同),请使用$(this).serializeArray()而不是$(this).serialize()来区分它们

您需要首先将表单数据转换为JSON!不是序列化所做的查询字符串,因此,JSON可以为您提供嵌套键的功能

然后,您可以将不同的数据放入JSON中的不同键中,如:

var myData = 
{
    'one': $('form').serializeObject(),
    'two': 'testing=whatever&something=else',
};

$('form').submit(function() {
    $.ajax({
        type: 'POST',
        data: myData,
        ...
    });
});
在PHP方面,您可以通过以下方式轻松获得:

$one = $_POST['one']
foreach($one as $key=>$value) { $message.= $key.": ".$value."\r\n"; }

谢谢,但是我如何才能在php中获得名称和值,这样我就可以执行类似于
foreach($key=>$value){$message.=$key.:“$value.\r\n”;}
这样的操作+1,但不是一个优雅的解决方案。parse_str是我一直在寻找的。我有一个拥有2个数组的目的。一个数组用作表单值,另一个数组用于其他目的。你的回答没有回答我的问题。parse_str没有为你从字符串中提取参数吗?谢谢alpaus,parse_str就是我要找的。它像预期的那样工作。我只是想知道,既然数据是一个查询字符串,我们是否需要对它进行url编码,以防它有特殊的字符或空格。我如何将我的serializeArray转换成JSON格式,它位于
one
中,而我的其他值位于
two
中,你不应该调用jQuery的serialize函数,而是从我在答案中给出的链接复制粘贴正确答案中的函数,然后使用:x=$(this).serializeObject();什么是序列化对象()。如果不按aplaus所示进行解析,我们无法获取这些值。@Pinkie它会将表单数据转换为JSON。您可以解析数组1,但不能解析数组2。如果仍然存在问题,请使用json_解码。