将关联数组传递给PHP中的其他页面

时间:2011-07-25 13:01:03

标签: php javascript

如何通过GET或POST将关联数组传递给其他形式?

有什么办法或我是否需要先将其转换为逗号分隔的字符串?

4 个答案:

答案 0 :(得分:2)

如果您的意思是将Javascript数组传递给PHP,那么答案就是使用JSON

JSON基本上是Javascript对象结构的字符串表示。您可以将Javascript对象转换为适合使用多个库之一发送到服务器的JSON字符串(现代浏览器内置.stringify()方法,但旧版浏览器不支持,因此您需要这是一个图书馆。 JQuery是显而易见的候选人,但还有很多其他人可以完成这项任务。实际技术会因您使用的库而异,所以我不会尝试在此处发布代码示例。

当您在PHP中收到字符串时,您可以使用PHP的json_decode()函数将其转换为PHP数组。

向相反的方向发展,您可以将PHP数组编码为带有json_encode()的JSON字符串,并将其读入您的Javascript应该相当容易(同样,现代浏览器具有内置功能;最坏的情况是您可以简单地eval(),但这样做有风险,所以我建议再次使用库来完成任务)

即使你的进程的一端不是Javascript,你仍然可以使用JSON,因为几乎每种语言现在都能够编码/解码JSON字符串。即使你在一个PHP程序和另一个PHP程序之间进行通信,你也可以这样做。

如果 完全是PHP-> PHP通信,您可以轻松使用serialize()unserialize(),这会产生与JSON不同的字符串格式;为了您的目的,它以相同的方式工作,但它是一种特定于PHP的格式,因此通常首选JSON。

答案 1 :(得分:1)

将其转换为转义的JSON字符串是一种很好的方法。看看json_encode(object)

答案 2 :(得分:0)

以POST为例:

<form action="page.php" method="POST">
<input type="hidden" name="value1" value="1" />
<input type="submit" />
</form>

将此传递给page.php

$_POST['value1'] // equals 1

作为带有jQuery的AJAX:

$.ajax({
    data: $('#form').serialize() // or [{key: 'value'}, {key: 'value2'}],
    url: 'page.php'
})

答案 3 :(得分:0)

您可以使用serialize() [docs] 将数组更改为字符串,然后使用{{}将其更改回来字符串上的1}} [docs]