2013-04-12 3 views
1

У меня проблемы с чем-то простым, я думаю. У меня есть Perl-скрипт, который уже содержит кучу функционирующего JQuery. Я надеялся использовать .blur и .get для запуска вспомогательной проверки электронной почты в Perl сразу же, когда пользователь покидает поле адреса электронной почты. Тем не менее, я не могу соединиться с Perl-скриптом и вызовом JQuery. Поэтому я упростил столько, сколько мог, чтобы попытаться заставить его функционировать. В принципе, пользователь покидает поле ввода, вызывается сценарий, просто печатает что-то, и у меня есть Jquery через предупреждение.jQuery .get() и Perl не работают вместе

JQuery

$('#billemail').blur(function() { 
    $.get('ajax_email_check.pl', { 'email': $('#billemail').val() }, function(data) { 
     alert ("Billing email is "+data+"!"); 
    }); 
}); 

Perl

#!/usr/bin/perl 

use warnings; 
use DBI; 
use CGI; 
use CGI::Carp qw(fatalsToBrowser); 
require "./lib/servervars.pl"; 
require "./lib/common.pl"; 

my $email_address = param('email'); 

#my $email_valid = &check_email($email_address); 

#if ($email_valid) { 
# $output = "Success"; 
#} 
#else { 
# $output = "Fail"; 
#} 

print "Success"; 

Конечно, если я удалить теги .get строки и закрытия, предупреждение срабатывает на поле теряет фокус. Спасибо за помощь!

+0

Можете ли вы показать фактический код и как у вас встроенный jQuery? – chrsblck

+0

Это может помочь: [jquery-inside-here-doc-not-working] (http://stackoverflow.com/questions/15958759/jquery-inside-here-doc-not-working) – chrsblck

+0

Существует уже куча JQuery в моем скрипте, и все работает нормально. Кроме того, приведенный выше код не нарушает работу JQuery. Он просто ничего не делает. – kyle

ответ

4

Ваш сценарий Perl (по крайней мере, версия, которую вы опубликовали) не выводит заголовок типа контента. Это, по крайней мере, CGI-скрипт должен выводить: заголовки ответов, пустую строку, сигнализирующую о конце заголовков, и, необязательно, содержимое (строка success в вашем случае), например.

print "Content-Type: text/plain\n\n"; 
if (email_is_valid()) { 
    print "success"; 
} else { 
    print "error"; 
} 
+0

Вы человек Мориц. Спасибо огромное! Это устранило проблему. Еще раз Perl смирил меня. – kyle

+0

Вы должны иметь [CGI] (https://metacpan.org/module/CGI#CREATING-A-STANDARD-HTTP-HEADER "perldoc CGI"), создавая для вас заголовки. –

1

Почему вы сбежали от $?

$.get('ajax_email_check.pl', { 'email': \$('#billemail').val() } 

             ^^^^^ 

По крайней мере, что, вероятно, мешает вам получать вашу ценность из billemail элемента (вход?).

Что еще более важно, вы неправильно соответствующие цитаты, так что ваши JS в целом является недействительным:

alert ("Billing email is '+data+'!"); // <-- Need double-quotes 
         ^^^ ^^^ 

Попробуйте решить, что и посмотреть, если вы получите лучший результат.

+0

его в скрипте perl. я хотел снять это перед публикацией. ive получил все мои $ escaped между моими тегами скрипта – kyle

+0

ok - см. мой обновленный ответ – Madbreaks

+0

Спасибо за помощь. Я обменял их на двойные кавычки и без кубиков. Я обновил свой код выше, чтобы отразить то, что я делаю. – kyle

Смежные вопросы