2014-12-03 62 views
1

我只需要一个简单的例子来说明如何将表单提交到Perl脚本并获得简单的响应,我认为这个示例代码缺少一些东西,而且我无法确定出来。如果有人能够判断这是否是一个很好的开始或问题出在哪里,谢谢你的帮助。
这里是我使用的是什么:

HTML文件:使用jQuery提交表单从Perl脚本获取响应

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4 /strict.dtd"> 
<html> 
<head> 
<title>jQuery.post demo</title> 
<script src="jquery-1.4.1.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 

// Attach a submit handler to the form 
$("#searchForm").submit(function(event) { 

// Stop form from submitting normally 
event.preventDefault(); 

// Get some values from elements on the page: 
var $form = $(this), 
namev  = $form.find("input[name='name']").val(), 
agev  = $form.find("input[name='age']").val(), 
url  = $form.attr("action"); 
alert(url); 

// Send the data using post 
var posting = $.post(url, { name: namev, age: agev }); 

// Put the results in a div 
posting.done(function(data) { 

//var content = $(data).find("#content"); 

$("#result").empty().append(data); 

}); 

}); 

</script> 

</head> 
<body> 

<p>jQuery.post</p> 

<form action="form_1.pl" id="searchForm"> 
<input type="text" name="name" placeholder="Search..."> 
<input type="text" name="age"> 
<input type="submit" value="Search"> 
</form> 

<!-- the result of the search will be rendered inside this div --> 
<div id="result"></div> 

</body> 
</html> 

这里是Perl测试文件:

#!/usr/bin/perl 

use strict; 
use warnings; 
use CGI; 
use CGI::Carp qw(fatalsToBrowser); 

my $c = new CGI; 

print $c->header(); 

if ('POST' eq $c->request_method && $c->param('name')) { 

# yes, parameter exists 
# print $c->param('name'); 
my $name = $c->param('name'); 
my $age = $c->param('age'); 

print "<span style='color:red'>Welcome <b>$name</b>. So you're <b>$age</b> years old eh?</span>"; 

}else { 

    print "--"; 

} 

谢谢!

+0

看起来是正确的,你可以看到什么反应? apache是​​否设置为执行CGI? – 2014-12-03 16:10:15

+1

为什么这么古老的jQuery版本? – Barmar 2014-12-03 16:17:53

+1

“我认为这个示例代码缺少一些东西,我无法弄清楚” - 这不是对你的问题非常有用的描述。你为什么觉得缺少一些东西?你看到了什么意想不到的行为? Web服务器错误日志中是否有任何内容? – 2014-12-03 16:42:52

回答

1

我裹着

$(document).ready(function() { ... }); 

的代码和现在的作品像它应该。

(由安德烈在评论自我回答)