我觉得我觉得有点简单。我有一个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行并关闭标记,则会在失去焦点的字段时触发警报。谢谢您的帮助!
答案 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
^^^ ^^^
尝试修复它,看看你是否得到了更好的结果。