2009-10-27 108 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。