我需要能夠解碼ajax調用的數據部分的多個參數到perl cgi腳本。我知道其他一切正在處理我的代碼,但無論出於何種原因,我似乎都無法使JSON模塊的解碼方法正常工作,從而將數據從JSON格式恢復爲參數。我的jQuery ajax調用中的數據是這樣設置的,這是正確的。jQuery AJAX到Perl JSON模塊解碼數據
data: {
maxRows: 5,
productName: request.term
}
但是,我試圖解析成perl的方式有些問題。
my $json = JSON->new->utf8->allow_nonref;
my $json_text = $cgi->param('data');
my $json_array = $json->decode($json_text);
我知道正確的最終結果應該是散列數組。如果我可以得到這麼多,我知道我會沒事的。但是,我的解碼行不起作用,並且實際上會導致整個腳本在執行時失敗。
我環顧四周,我只是無法弄清楚這一點。我很確定這是一個非常小的調整。
我使用$ cgi-> param('data')正確獲取參數嗎?它最終是否被命名爲數據,還是其他東西?
確定嗎? jQuery API和演示已經完成了他們以上的方式。我甚至測試了這個演示代碼:http://jqueryui.com/autocomplete/#remote-jsonp我自己,它的工作。我只是沒有服務器端腳本來看看它是如何被解析的。 – sage88 2013-04-09 11:10:44
是的,我以前見過這種方法,我想我只是想更深入地理解如何使用CGI.pm獲取AJAX數據。相比之下,這種方法看起來像是一種黑客攻擊。 http://www.ibm.com/developerworks/webservices/library/ws-simplelogin/它使用相同的概念。我知道我現在的工作方式,我只是不知道geonames.org使用的解析技術。但我想乞丐不能是選擇者。 – sage88 2013-04-09 11:24:56
另一方面,我使用開發者工具開啓的Google Canary。我可以看到出現的查詢字符串參數爲:maxRows:5 productName:bi(如果我在輸入中輸入bi)。所以即使是開發者工具也正確地解析它們,這特別令人厭煩。 – sage88 2013-04-09 11:26:28