Как отдать json

 
0
 
Perl
ava
Marlik | 02.10.2013, 12:48
Привет, дали тут скриптик на jquery. Воткнул я его на страницу. Скриптик по селекту запрашивает мой cgi скрипт. Так вот, на страницу не возвращается ответ от скрипта. Скрипт cgi рабочий, проверял до этой строки:


print $cgi->header(-type => "application/json", -charset => "utf-8");
print $hash_ref;


Тут я выставляю заголовок, и отправляю данные назад на страницу. Вопрос, правильно ли так возвращать? Как проверить, ушли-ли данные в скрипт? Спасибо.

Comments (5)
ava
Jimy | 02.10.2013, 12:01 #
Цитата


Как проверить, ушли-ли данные в скрипт?


Во всех современных браузерах есть средства отладки. Там можно посмотреть, что возвращается с сервера.
ava
krypt3r | 02.10.2013, 12:03 #
Ну сделайте в JS-коде alert (data) и посмотрите, валидный ли JSON отправляется. Чую, что нет, отправляете ссылку на хэш. Если так, use JSON
ava
Marlik | 02.10.2013, 13:01 #
Что прислал jquery я проверил, валидно, и что я потом перевел все в формат json тоже проверил. А вот ушли-ли данные, вопрос?
ava
Marlik | 02.10.2013, 14:19 #
Цитата (krypt3r @ 2.10.2013,  12:03)
Ну сделайте в JS-коде alert (data) и посмотрите, валидный ли JSON отправляется. Чую, что нет, отправляете ссылку на хэш. Если так, use JSON

Что-то не понял? Я использую use JSON:PP. Не получается хэш заенкодить. Только как ссылку на хэш, ну и отправляю ее. Попробую сам хэш послать. 
ava
Marlik | 03.10.2013, 07:38 #
Все, заработало... правда JSON не парсит... но уже легче, видно в какую сторону копать. Может кому-то пригодится скриптик на Perl который возвращает JSON:


#!/usr/bin/perl -w
    $| = 1;
    use strict;
    use CGI;.....
    use DBI;
    use JSON::PP;

    my $cgi = new CGI;
....
    my %part;
    my $hash_ref = \%part;
    my $state = $cgi->param( 'country' );

    my $db = 'sity';
    my $host = 'localhost';
    my $user = 'marlik';
    my $passwd = '*******';

    my $dbh = DBI->connect("DBI:mysql:$db:$host", $user, $passwd) || die "$!";
    my $sth=$dbh->prepare("select id_region, name from region where id_country='$state'");
    $sth->execute:

    while(my($key, $value) = $sth->fetchrow()){
    $part{$key} = "$value";
}
    $sth->finish;
    $dbh->disconnect;

    $hash_ref = encode_json $hash_ref;

    print $cgi->header(-type => "application/json", -charset => "utf-8");
    print "$hash_ref";

    exit();



Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Marlik   krypt3r   Jimy
advanced
Submit