2009-10-27 114 views
1

我有一个杀手时间试图创建一个JSON对象返回到一个jQuery请求。使用Perl模块JSON来创建一个JSON对象

我试图使用jQuery chained select module

我试图创建一个使用Perl的JSON module的JSDN对象。

我不知道我在做什么错,或者我怎么可以调试它,关于我能做的最好的是得到一个JS对话框来与“未知的错误....”。

这就是我正在尝试创建JSON对象时,我认为这将是所有需要的,但事实并非如此。有任何想法吗?

TIA

use JSON; 
my %data = (1 => 'val1', 
      2 => 'val2', 
      3 => 'val3', 
      ); 
my $json_text = to_json(\%data); 
print $json_text; 

回答

5

运行脚本给:

{"1":"val1","3":"val3","2":"val2"} 

...这是预期输出。

这个问题几乎肯定存在于您用来从服务器获取JSON到客户端的任何代码。

+0

我只是把它印出来 - 我以为那就是需要的一切? “print $ json_text” – Chris 2009-10-27 21:45:42

+0

@Chris:您在上述问题中提供的代码段是正确的,并且正常工作。在独立脚本中自己再试一次,看看。 (所以它必须是您的脚本中的其他内容是错误的。) – Ether 2009-10-27 21:48:29

+0

您打算在哪里打印它?输出是什么样的? – Quentin 2009-10-27 21:58:26

1

让javascript在处理textarea之前输出响应文本,以便您可以查看是否存在传输失败的情况。另外,你会希望在数据前加上一些东西,比如“myVar =”,这样数据就会被分配到另一端。

+0

谢谢Woolstar,我会试着弄清楚如何做到这一点(我对JQuery一无所知) – Chris 2009-10-27 21:46:17

1

看起来你已经知道你的问题了,如果你想知道为什么它不工作,是因为to_json方法没有从旧版本的JSON模块中的JSON.pm中导出。 CPAN(2.0)上的最新版本将to_json导出到您的名称空间,但版本〜1.5不会,并且需要JSON ::。许多回购协议仍然使用这个较旧的版本,如果您使用的是CentOS〜5.3或旧版本的Fedora Core,则会有较旧的JSON.pm。