Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> perl + jquery: не могу получить ответ от сервера 
:(
    Опции темы
fanat1k
Дата 13.4.2010, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 17.11.2006

Репутация: нет
Всего: нет



Вот небольшой пример кода, пусть test1.cgi
Код

#!/usr/bin/env perl
print <<script;
Content-type: text/html\n\n
<script type='text/javascript' src='/js/jquery/jquery.js'></script>

<div id="mydiv">hello</div>
    <form name="my_form" method="POST" onSubmit="check_username()">
    <input type="text" name="username" value="" id="username_id">
    <input type="submit" value="submit">
    </form>

    <script type="text/javascript">
        function check_username() {
            alert("checking");
            //\$("<h1>TEST</h1>").appendTo("#mydiv");
            var u = \$("#username_id").attr("value");
            \$.post("/cgi-bin/check_user.pl", {u: u}, function(theResponse){
                alert("response" + theResponse);
                //\$("<h1>TEST</h1>").appendTo("#mydiv");
                alert("END");
            });
     }
    </script>
</html>

SCRIPT


check_user.pl:
Код

#!/usr/bin/env perl
use CGI qw /:standard/;

print "Content-Type:text/plain\n\n";
#print "Content-Type:application/json\n\n";

my $user_name = param('u');

open FH, ">>/tmp/check_user.txt" or die;
print FH "user_name:$user_name\n";
close FH;
print "$user_name";

Все работает хорошо, кроме одного. Я не могу поймать ответ от сервера. Код alert("response" + theResponse) показывает только "response".
В чем проблема ? Пробовал заголовки менять. Или подскажите модуль который упростит мне жизнь.
И еще вопрос, касательно jquery. Код "\$("<h1>TEST</h1>").appendTo("#mydiv")", который после alert("checking") срабатывает, но только на мгновение появляется TEST и исчезает. Почему так ? А внутри функции этот код вообще не отрабатывает и даже не срабатывает alert("END") который идет за ним.
Спасибо.

PM MAIL   Вверх
fanat1k
  Дата 13.4.2010, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 17.11.2006

Репутация: нет
Всего: нет



Какая то магия для меня этот JavaScript.
Начал изучать Firebug и немного поклацав ... о чудо! При установке брейкпоинта в точке "alert("response: " + theResponse)" он мне вернул ответ! Убрал - ответа нету, установил - есть.
Или вот еще упрощенный кусок кода из приведенного выше
Код

        function check_username() {
            var u = \$("#username_id").attr("value");
            \$.post("/cgi-bin/check_user.pl", {u: u}, function(theResponse){
                alert("END");
            });
           alert("END2");
        }

Вылазят оба алерта, END2 поверх END. Если закомментировать END2, то и END не срабатывает!!!
В итоге у меня код, приведенный в первом посте работает и я получаю ответ от сервера, если я добавлю alert("END2")!
Для меня это все выглядит как минимум бредово. Продолжаю копаться в Firebug'e.
Буду очень благодарен, если кто прольет свет на тьму моего JS и jquery.
Спасибо.
PM MAIL   Вверх
gcc
Дата 14.4.2010, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



данные с js в perl вообще передаються?

если, да то в данном случае вопрос по js... спрашивайте в разделе про js

я например, не понял зачем так писать             \$.post("/cgi-bin/check_user.pl", {u: u}, function(theResponse){ 
onSubmit="check_username()" (можно click поставить просто)
?
что значит {u: u}  ?

Это сообщение отредактировал(а) gcc - 14.4.2010, 11:19
PM WWW ICQ Skype GTalk Jabber   Вверх
fanat1k
Дата 15.4.2010, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 17.11.2006

Репутация: нет
Всего: нет



Цитата(gcc @ 14.4.2010,  11:17)

данные с js в perl вообще передаються?

да, передаются. имя переменной успешно логируется:
Код

open FH, ">>/tmp/check_user.txt" or die;
print FH "user_name:$user_name\n";
close FH;

Цитата(gcc @ 14.4.2010,  11:17)

я например, не понял зачем так писать             \$.post("/cgi-bin/check_user.pl", {u: u}, function(theResponse){ 
onSubmit="check_username()" (можно click поставить просто)
?

$.post  - аякс запрос. вызывать можно по многим событиям (onSubmit, onChange, и т.д.)
Цитата(gcc @ 14.4.2010,  11:17)

что значит {u: u}  ?

вторая u: то что введено в поле <input type="text" name="username" value="" id="username_id">.
                 var u = \$("#username_id").attr("value");
первая u: имя переменной, которая будет доступна в перле: my $user_name = param('u')

PS: так как данные с сервера у меня получается получить при определенных обстоятельствах описанных в моем втором посте, а также следую вашему совету я иду в раздел JavaScript.
Всем спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0465 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.