我正在尝试将我从 MySql 数据库中获取的 JSON 字符串发布到另一个 php 页面。这是我的父页面代码:
$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[] 时,长度是选中的复选框的正确数量,但它保存的数据从打印的第一行开始。有任何想法吗?