MySqlデータベースから取得したJSON文字列を別のphpページにPOSTしようとしています。親ページのコードは次のとおりです。
$ResultLists = array();
$counter = 0;
echo "<form target=\"_blank\" enctype=\"multipart/form-data\" method=\"post\" action=\"_popup.php\" name=\"compare\">";
while($data != NULL and $info = mysql_fetch_array( $data ))
{
Print "<tr>";
//..
//I printed some data here, but not relevant to problem
//..
$ResultLists[$counter] = $info['ResultList']; //gets JSON string
echo gettype($ResultLists[$counter]); //prints "string"
//echo $ResultLists[$counter]; //prints the whole list (it is a list of lists <--from python)
$var = json_decode($ResultLists[$counter]); //decode JSON string
echo $var[1][0]; //prints wonderfully (I am only printing one value in "array", but it works).
Print '<td><input type="checkbox" name="data[]" value="'.$ResultLists[$counter].'" /></td>';
Print '</tr>';
$counter++;
}
echo '<tr><td><input type="hidden" name="index" value="'.$counter.'" />';
echo '<input type="submit" value ="Compare Data"> </input></td></tr>';
子ページで、データを取得しようとします。
<?php
$index = $_POST['index'];
echo 'Number of rows: '.$index.'<br>';
$array = $_POST['data'];
$x = 0;
//echo gettype($array);
echo '<b>Type:</b> '.gettype($array[$x]).'<b> Length:</b> '.strlen($array[$x]).' <b>Data:</b> '.$array[$x].'<br>';
$var = json_decode($array[$x]);
echo gettype($var).strlen($var);
echo $var[1][0];
?>
これは(たとえば)を生成します
Number of rows: 8
Type: string Length: 2 Data: [[
NULL0
だから、それは動作しません。(これは、送信したデータのすべての行に対して行われます。したがって、$ xを変更すると、選択したチェックボックスの数の範囲内である限り、同じ出力になります。)何かアイデアはありますか?リスト全体ではなく「[[」として表示されるのはなぜですか?リスト全体を親ページに印刷できますが、正常に機能します。
一重引用符「」「」の文字などが原因であると思われます。何か案は?
編集:
したがって、魔法の引用を無効にすることは、私が投稿するのに役立ったようです。
しかし、私は奇妙な問題を抱えています。それはどういうわけか私のすべてのデータを送信します。
したがって、POSTを介してdata []を取得すると、長さはチェックされたチェックボックスの正しい数になりますが、保持されるデータは印刷された最初の行から始まります。何か案は?