带有ajax的php数组传递/发送到其他php文件,并在其他php文件中用作foreach数组

时间:2013-07-18 12:43:26

标签: php ajax

输入表格如<input type="text" name="record_date[] ...

将表单发送到其他php文件的ajax的一部分是

var values = $("form").serialize();
$.ajax({
type: 'POST',
data: { 'Values' : values },
dataType: 'json',

另一个php文件接收数据

$values = $_POST['Values'];

了解这一点parse_str($_POST['Values'],$output);创建了数组($output是数组)

但是这个print_r(json_encode($output));我什么也没看到(期望看到有数值的数组等)。

如果使用echo json_encode($output['record_date']);,那么一切正常并输入值。

尝试创建数组,然后像这样使用数组

 foreach ($output as $i=>$output_value ) {
 echo json_encode($output_value[$i]);
 }

更改为此echo json_encode($output_value['record_date'][$i]);但在两种情况下均未回显。

据我所知,主要问题是如何“修改/转换”parse_str($_POST['Values'],$output);到php数组

$_POST['Values']如下所示:record_date%5B%5D=02.07.2013&record_date%5B%5D=01.07.2013

可能而不是parse_str需要使用别的东西

更新

如果在ajax中使用dataType: 'json',和php

foreach ($output as $key => $output_value) {
echo json_encode($output_value);
}
然后什么都没得到。

如果发表评论dataType: 'json',,请参阅[“02.07.2013”​​,“01.07.2013”​​]。

如果使用echo json_encode($output_value);代替echo $output_value;,请查看ArrayArrayArrayArrayArray的长列表。

如果foreachvar_dump($output_value);使用array(2) { [0]=> string(1) "2" [1]=> string(1) "6" } ............... array(2) { [0]=> string(10) "02.07.2013" [1]=> string(10) "01.07.2013" } ,请按以下方式查看

echo $output[$key][0]

在foreach内部看似foreach ($output[record_date] as $key => $output_value) { echo $output_value. ' output value<br>'; echo $output[other_name_from_html_input][$key]. ' output date selector value<br>'; } 做了必要的事情......

最后得出结论,必须使用这种代码

{{1}}

1 个答案:

答案 0 :(得分:1)

parse_str()实际上可以满足您的需求。

parse_str($_POST['Values'], $output);
foreach ($output as $key => $output_value) {
    echo json_encode($output_value);
}

你的问题是你不明白foreach循环是如何工作的。 $output_value已经是当前迭代的数组元素的值,因此您不需要将它与索引一起使用。如果要使用索引,则应将它们与原始数组一起使用,如下所示:

foreach ($output as $key => $output_value) {
    echo json_encode($output[$key]);
}

仔细阅读:PHP: foreach

但有些事让我感到困惑。为什么要将序列化表单数据作为单个值传递,何时可以将其作为发布数据本身传递?在这种情况下,您不需要使用parse_str(),您的代码就是这样:

<强> JS:

var values = $("form").serialize();
$.ajax({
type: 'POST',
data: values,
dataType: 'json',

<强> PHP:

foreach ($_POST as $value) {
    echo json_encode($value);
}
相关问题