我在Windows 7上安装了perl-activestate和IIS。现在我想使用Ajax。
当我从chrom调用perl_script.pl
时,我在页面上看到“AA”(\localhost\perl_script.pl
)。
#!C:\Perl64\bin -w
use encoding('utf8');
use CGI;
use strict;
use warnings;
require Encode;
require CGI;
use CGI qw(:standard);
my $query = CGI->new();
my $v1 = "AA";
print $query->header('text/plain;charset=UTF-8');
print "$v1" ;
现在开始使用Ajax,我首先尝试这个简单的例子,我想称之为
来自javascript的perl_script.pl
并在我的页面上看到字母“AA”。你能否告诉我有什么遗失或者我必须安装?如何使这个简单的程序工作。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function callSendAjax(){
$('form[name=addProductsForm]').submit(function(){
$.post("/localhost/perl_script.pl", $(this).serialize(), function(data){
alert(data);
});
return false;
);
}
</script>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data" name="addProductsForm">
<table>
Learning Ajax
<input type="button" value="Save" onclick="callSendAjax()" />
<div id="saveResult"></div>
</table>
</form>
</body>
</html>
我尝试过尽可能多的答案,因为我可以在互联网上找到解决这个问题,但没有运气。所以请帮忙。
答案 0 :(得分:0)
你正在用ajax弄乱jQuery。我不了解jquery,但使用createRequestObject()等经典的javascript看起来会有所不同。
var http_option = createRequestObject();
function verifyRequest()
{
var option = document.getElementById("element id where event is generated").value;
if ( option )
{
var url = 'x.pl?option='+option;
http_option.open('get', url );
http_option.onreadystatechange = handleResponse;
http_option.send(null);
}
}
function handleResponse()
{
if(http_option.readyState == 4 && http_option.status == 200)
{
var response = http_option.responseText; // Text returned FROM perl script
if(response) { // UPDATE ajaxTest content
document.getElementById("elementid where ajax codeistoload").innerHTMLresponse;
}
}
此外你没有提到div id&#34; saveResult&#34;代码中的任何地方。如果您希望在这些div标签之间加载ajax脚本,我认为您需要提及它。
答案 1 :(得分:0)
您是否尝试过使用CGI :: Ajax?服务器可能没有意识到您打算将来自JS的调用作为Ajax调用,因此它将perl脚本发送的响应作为单独的页面加载。
也可能是您使用jQuery提交表单。不是使用表单,而是如下所示?
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function callSendAjax(){
$.post("/localhost/perl_script.pl",{'param1': $("#myParam").val()}, function(data){
alert(data);
});
}
</script>
</head>
<body>
<table>
Learning Ajax
<input type="text" id="myParam" />
<input type="button" value="Save" onclick="callSendAjax()" />
<div id="saveResult"></div>
</table>
</body>
</html>
基本上,我删除了表单(以及方法=&#34; post&#34;,我认为这导致perl脚本的输出重新加载)并添加了发送到的参数使用jQuery的服务器。 注意:我没有尝试过此代码以查看它是否运行。您可能需要调整一下才能使其运行。