通过POST正确传递数组的方法是什么?

3
我有两个页面:
  • Graph.php
  • List.php
Graph页面的功能就是绘制数据图表。如果没有post/get数据,它会显示给定表中的所有数据。
List页面是一个巨大的表格,加载大约500-600行数据。在表格中,您可以使用JavaScript对行进行排序和筛选。该表格大约有14列宽度。
在List页面中对行进行排序后,您可以按下“Graph”按钮,将可见行传递到graph页面并绘制出来。
我遇到的问题是如何将这些ID传递到graph页面。我开始尝试:
<?php
if(isset($_POST['data']))
{
    echo "FOUND SERIALIZED ARRAY<br>";
    $afterSerializeArray = unserialize($_POST['data']);
    print_r($afterSerializeArray);
}
    $beforeSerializeArray = array();
    $beforeSerializeArray[] = 1;
    $beforeSerializeArray[] = 2;
    $beforeSerializeArray[] = 3;
    $serializeArray = serialize($beforeSerializeArray);
?>
<form action="" method="post">
<input type="hidden" name="data" value="<?php echo $serializeArray; ?>"/>
<input type="submit" value="Serialize"/>
</form>

我写了一小段代码来获取可见行的ID,并将它们加载到数组中,序列化并将其传输到一个变量中以便发布到图表中。
我应该使用GET吗?我是否应该以不同的方式处理此问题?
我之所以希望在过滤和排序页面与图表分离,是因为用户有很多列和选项可以进行过滤和排序。

我不会将第一页的所有数据都发布到第二页,我会发布一些方法来识别数据,并在第二页重新选择它们以供显示。 - user557846
我不太理解 @Dagon 的意思。 - user1627928
不要直接将页面1中的所有“过滤”数据传递到页面2,而是只需传递页面1中的过滤条件:即用户设置了哪些过滤器来限制可见的数据?然后您只需重新应用这些过滤器(导致相同的数据集),并使用结果来绘制图形。 - Jonah Bishop
你从哪里获取需要序列化的数据,以及如何获取? - Glavić
@glavić 当我点击“图形”按钮时,它调用一个方法来获取所有可见的行。它从中提取存储对象id的“title”属性。 - user1627928
显示剩余5条评论
1个回答

4

不要尝试通过post发送数组,而应该使用特殊字符(如',')将这些ID连接起来。这样,您将得到所有ID作为逗号分隔的值在$_POST['data']中。现在,您可以使用PHP explode函数将所有值获取到一个数组,并根据需要使用它们。

以下代码示例可能会对您有所帮助

<?php
if(isset($_POST['data']))
{
    echo "FOUND Ids<br>";
    $IdArray = explode(',',$_POST['data']);
    print_r($IdArray );
}
    $idarray = array('1','2','3');
    $ids = implode(',',$idarray);
    ?>
<form action="" method="post">
<input type="hidden" name="data" value="<?php echo $ids;?>"/>
<input type="submit" value="Serialize"/>
</form>

请问您能否详细阐述一下您的答案?为什么将数据作为字符串而不是数组发送更好?这只是为了使访问更容易吗? - andrewsi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接