【发布时间】:2013-07-18 12:43:25
【问题描述】:
有<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);
}
然后一无所获。
如果commentdataType: 'json',,则参见["02.07.2013","01.07.2013"]。
如果使用echo $output_value; 代替echo json_encode($output_value);,请查看ArrayArrayArrayArrayArray 的长列表。
如果在foreach 内部使用var_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>';
}
【问题讨论】: