2013-07-18 87 views
0

有無輸入表格等<input type="text" name="record_date[] ...腓陣列AJAX通/發送給其他的PHP文件,並在如用foreach陣列其他PHP文件使用

部分AJAX的發送形式向其他PHP文件是

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

如果裏面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>'; 
} 

回答

1

parse_str()實際上做es你需要什麼。

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); 
} 
+0

使用Ajax我也需要通過' user2465936

+0

With'foreach($ output as $ i => $ output_value){ echo json_encode($ output_val UE); ''也得不到任何東西....和''echo json_encode($ output [$ i])一樣;''但是'echo json_encode($ output ['record_date']);'外部foreach正在工作... – user2465936

+0

複製並過去我的第一個代碼示例。我只是測試它,它爲我工作。 http://pastebin.com/UfPAc2ET如果它沒有工作,使用foreach循環內的'var_dump($ output_value)'來查看出了什麼問題。 – Hast