-1

我正在尝试将我从 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[] 时,长度是选中的复选框的正确数量,但它保存的数据从打印的第一行开始。有任何想法吗?

4

1 回答 1

1

您可能希望使用htmlspecialchars. IE,

Print '<td><input type="checkbox" name="data[]" value="'.htmlspecialchars($ResultLists[$counter]).'" /></td>';
于 2012-09-11T19:12:50.410 回答