サーバー側からクライアント側にハッシュを渡す必要があります。フロントエンドとバックエンドでそれぞれ jquery と perl CGI::Application を使用しています。私は jquery の使用に関して初心者なので、サーバーhttp://jquery.malsup.com/form/#jsonから返された JSON データを処理する方法を示す jquery フォーム プラグインの例を変更しました。与えられたコードをお気に入りの perl Web フレームワーク CGI::Application で使用しようとしました。スカラー値を渡す場合はCGI::Application::Plugin::JSON
うまく機能しますが、ドキュメントがないため、配列やハッシュを渡す方法、または複雑なデータ構造を渡す方法がわかりません。ハッシュを渡すとき、私は次のコードスニペットを使用しています:-
foreach my $k (sort keys %hash)
{
return $self->add_json_header ( { message => $hash{$k}} );
}
これは、Apache エラー ログに表示されるエラーです。
ajaxtest.pl: Odd number of elements in hash assignment at /usr/local/share/perl/5.10.0/CGI/Application/Plugin/JSON.pm line 98., referer: http://localhost/echo.html
スカラーを渡している間、私は CGI::Application::Plugin::JSONjson_body
関数を使用しています。どこが間違っているのか教えてください。以下は、フォーム プラグイン サイト (上記のリンク) にもある html ファイルの Jquery コードです。
// prepare the form when the DOM is ready
$(document).ready(function() {
// bind form using ajaxForm
$('#jsonForm').ajaxForm({
// dataType identifies the expected content type of the server response
dataType: 'json',
// success identifies the function to invoke when the server response
// has been received
success: processJson
});
});
function processJson(data) {
// 'data' is the json object returned from the server
alert(data.message);
}
CGI::Application::Plugin::JSON
ハッシュのハッシュや配列の配列などの複雑なデータ構造での使用に関するアドバイスは、将来必要になるので大歓迎です。