3
我正在与jQuery.ajax()一起发送一些HTML表单数据到我的Perl脚本在服务器上,然后返回一些数据回到前端。将数据传递给CGI脚本并返回jQuery.ajax
优选地,数据应该是文本/字符串格式。我还需要将它保存为一个变量,以便在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;
谢谢,它现在有效。我将这个变量转换为一个字符串,以便更好地度量并纠正顶部的一个错字:'my $ completename = $ firstname。 $名称; my $ completename =“$ completename”; print $ cgi-> header('text/plain; charset = UTF-8'); print $ completename;' – atreju
您的代码'$ completename =“$ completename”'完全没有任何用处。为什么不只是'打印'$ firstname $ name“;'? –
你说得对,当然。这只是我添加真实Perl代码之前需要运行的一个简单示例。 – atreju