2009-11-27 99 views
0

我运行一个JavaScript代码,它读取不同XML文件中的值,并根据这些值生成多维数组。现在我需要将这个数组传递给一个PHP页面。我尝试了不同的方式,但它始终将字符串传递给arrray而不是数组。 任何人有一个想法:(...并非常感谢你从javascript到php传递多维数组

回答

0

你需要一个JSON编码器/解码器来做到这一点。Prototype有它在默认情况下实现的,并与jQuery你可以使用jQuery-JSON

例如,如果您使用的原型为您的JS库,然后您可以将您的阵列成这样的字符串:

var example_multi_dim_arr = {"a":[1,2,3], "b": [4,5,6]}; 
var string_to_be_sent_to_server = Object.toJSON(example_multi_dim_arr); 

而在PHP端(假定JSON字符串传递给脚本作为POST变量)

$multi_dim_arr = json_decode($_POST["variable_with_json"], true); 

json_decode最后true字段指示该输出应在一个形式数组($multi_dim_arr["a"])而不是作为对象($multi_dim_arr->a)。

注意!函数json_decode在PHP 4中不是本地可用的,如果您使用的是较早版本的PHP,则应该找到相应的JSON类。在PHP 5中,一切都应该正常工作。

+0

嗨,谢谢你的答案;)..即时通讯使用这个库,它看起来很好的编码和解码,因为我没有得到任何错误消息。 Plus im使用'GET'方法将这个数组从java脚本传递给php。问题是,即时通讯尝试echo命令时,我没有得到任何价值...在PHP页面中的代码是: $ multi_dim_arr = $ _REQUEST ['the_array']; $ clustering_activities = json_decode($ multi_dim_arr); echo $ clustering_activities [0] [0]; 我没有得到任何价值。似乎解码不能以正确的方式工作。任何想法 !? ..和谢谢;) – Beso 2009-12-10 18:26:49

+0

只是忘了提及,我也试过它与真正的价值,如$ multi_dim_arr = json_decode($ _ POST [“variable_with_json”,true);但相同...总是没有值:((( – Beso 2009-12-10 18:31:04

+0

你编码在GET url中的json字符串? url =“http://www.example.com/target.php?the_array=”+ encodeURIComponent(json_str ) – Andris 2009-12-10 20:31:34

1

什么迦勒说。 使用this和JSON你的JS数组编码为一个字符串,将其发送到PHP和使用json_decode将其解码成PHP阵列。