jQuery .get()和Perl不能一起运行

时间:2013-04-12 16:41:50

标签: jquery perl get

我觉得我觉得有点简单。我有一个Perl脚本,它已经包含了许多正常运行的JQuery。当用户离开电子邮件地址字段时,我希望立即使用.blur和.get在Perl中运行电子邮件验证子。但是,我似乎无法将Perl脚本和JQuery调用连接在一起。所以我尽可能地简化了尝试让它发挥作用。基本上,用户离开输入字段,脚本被调用,只是打印一些东西,我通过警报得到Jquery。

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行并关闭标记,则会在失去焦点的字段时触发警报。谢谢您的帮助!

2 个答案:

答案 0 :(得分:4)

您的Perl脚本(至少是您发布的版本)不会输出内容类型标头。这至少是一个CGI脚本必须输出的内容:响应头,一个表示标题末尾的空行,以及可选的内容(例如,字符串success),例如

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

答案 1 :(得分:1)

为什么你逃过这里的$

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

                                       ^^^^^

至少,这可能会阻止你从billemail元素(输入?)中获取你的价值。

更重要的是,你的引号不匹配,所以你的JS无效:

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

尝试修复它,看看你是否得到了更好的结果。