Мне нужно передать хэш со стороны сервера на сторону клиента.Я использую JQuery и Perl CGI :: Application соответственно на переднем и заднем плане.Я начинаю, когда дело доходит до использования jquery, поэтому я изменил пример плагина формы jquery, который показывает, как обрабатывать JSON-данные, возвращаемые с сервера http://jquery.malsup.com/form/#json. Я пытался использовать данный код с моей любимой веб-инфраструктурой perlCGI :: 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: <a href="http://localhost/echo.html" rel="nofollow">http://localhost/echo.html</a>
При передаче скаляра я использую функцию CGI :: Application :: Plugin :: JSON json_body
.Пожалуйста, дайте мне знать, где я иду не так.Ниже приведен код Jquery в html-файле, который также указан на сайте плагина формы (ссылка приведена выше):
// 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
со сложными структурами данных, такие как хэши хешей и массивовмассивов приветствуется, так как мне это понадобится в будущем.