将数据传递到CGI脚本,然后使用jQuery.ajax返回
Pass data to CGI script and back with jQuery.ajax
我正在使用jQuery.ajax()将一些HTML表单数据发送到服务器上的Perl脚本,然后将一些数据返回到前端。
数据最好采用文本/字符串格式。我还需要将它保存为一个变量,以便在jQuery函数中进一步使用。
我已经设置了HTML代码、JavaScript和CGI Perl脚本,但当JavaScript工作时,与CGI Perl脚本的连接不正常,我总是收到错误消息:"脚本调用不成功"。
也许有人能告诉我错误在哪里?我不完全确定如何将Perl脚本中的变量返回到服务器。
由于我还是jQuery和JavaScript的新手,以前也没有处理过异步调用,因此非常感谢您的帮助。
这是我的代码:
HTML代码:(其中用户用他的名字填写表单:
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="get_names.js"></script>
</head>
<body>
<div id="loginContent" class="container">
<div id="loginResult" style="display:none;">
</div>
<form id="loginForm" name="loginForm" method="post" action="">
<fieldset>
<legend>Enter information</legend>
<p>
<label for="firstname">First name</label>
<br />
<input type="text" id="firstname" name="firstname" class="text" size="20" />
</p>
<p>
<label for="name">Name</label>
<br />
<input type="test" id="name" name="name" class="text" size="20" />
</p>
<p>
<button type="submit" class="button positive">
Login
</button>
</p>
</fieldset>
</form>
</div>
</body>
</html>
JavaScript代码:
$(document).ready(function(){
$("form#loginForm").submit(function() { // loginForm is submitted
var firstname = $('#firstname').attr('value'); // get first name
var name = $('#name').attr('value'); // get name
if (firstname && name) { // values are not empty
$.ajax({
type: "POST",
url: "/cgi-bin/perl_script.cgi", // URL of the Perl script
// send firstname and name as parameters to the Perl script
data: "firstname=" + firstname + "&name=" + name,
// script call was *not* successful
error: function() {
alert("script call was not successful");
},
// script call was successful
// perl_data should contain the string returned by the Perl script
success: function(perl_data){
alert("Your name is: " + perl_data)
}
});
}
else {
$('div#loginResult').text("Enter your name");
$('div#loginResult').addClass("error");
}
$('div#loginResult').fadeIn();
return false;
});
});
Perl代码:
#!/usr/bin/perl -w
use CGI;
use strict;
use warnings;
# read the CGI params
my $cgi = CGI->new;
my $firstname = $cgi->param("firstname");
my $name = $cgi->param("name");
my $completename = $firstname . $name;
print $completename;
问题出在Perl程序中。它不编译。它不发送所需的HTTP标头。添加print $cgi->header('text/plain;charset=UTF-8');
或类似内容,并注意对适合内容类型的输出进行编码。
相关文章:
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 等待300毫秒,然后使用jQuery向下滑动菜单
- 使用Jquery收集数组中的行ID,然后为新表查询这些值
- jquery通过ajax验证电子邮件,然后再通过ajax提交表单
- JQuery将侦听事件添加到.rezable(),然后附加DIV's
- jQuery Deferred and promise-错误:对象没有't支持属性或方法'然后'
- jQuery幻灯片Down&然后在计时器上向上滑动
- jQuery检查CSS宽度是否大于0,然后添加CSS属性
- 当调用.of()然后调用.on()时,Jquery是否可能将事件推迟
- 在提交之前验证表单,jQuery发布到javaScript,然后提交到确认页面
- 使用 jQuery 加载 JSON,然后将其显示给查看器
- jQuery淡入淡出/动画不透明度到不同的显示类型,然后阻止
- jQuery 插入,然后淡出,然后删除
- jQuery移动显示页面5秒钟,然后重定向
- 如何检查 HTML 标记,然后在 jQuery 验证中添加错误
- JQuery 测试元素是可见的还是隐藏的,然后添加删除类
- JQuery/JavaScript:遍历表单字段,执行计算,然后提交
- jQuery检查URL,然后显示和隐藏元素
- 如何先追加,然后在jquery中运行ajax
- 如何确保我的值已添加并存在,然后运行另一个代码jquery