使用Ajax调用perl脚本

时间:2014-07-12 10:09:20

标签: ajax perl

我在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>

我尝试过尽可能多的答案,因为我可以在互联网上找到解决这个问题,但没有运气。所以请帮忙。

2 个答案:

答案 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的服务器。 注意:我没有尝试过此代码以查看它是否运行。您可能需要调整一下才能使其运行。