IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

perl模块之CGI::Ajax来实现异步通信

扶凯 2010-01-05 22:26:01 累计浏览 3,809 次
本机暂存

ajax全名为Asynchronous JavaScript and XML ,异步javascript和xml.这是web2.0的主流技术.在perl中就不用自己实现了.perl中就有很好用的模块.这样我们就不用花大量的时间来研究浏览器和服务器上的perl怎么交互了.

我们只要安装CGI::Ajax这个模块就能实现一个java的事件和一个perl的程序关联起来.perl的模块程序自动生成javascript调用的代码,这样我们可以多关注程序本身的功能.

#cpan CGI::Ajax

建议参考文章:http://www.perl.com/pub/a/2006/03/02/ajax_and_perl.html

下面是cpan中的例子,我用中文在注解一下.

以下是代码片段:
use strict;
use CGI;      #所有能生成html的模块都行.为了方便我们用最常用的CGI模块
use CGI::Ajax;
 
my $cgi = new CGI;
my $pjx = new CGI::Ajax( ’exported_func’ => \&perl_func );
#上面最重要了.上面’exported_func’是一个ajax的功能函数.就是一个事件,关联到perl_func这个功能上面
 
print $pjx->build_html( $cgi, \&Show_HTML);
#这是给下面的show_html中的html输出成模块的网页.
 
# 这个函数收到的就是ajax提交过来的内容,然后处理,处理的结果是在javascript中 ’exported_func’定义的,不急下面可以见到
sub perl_func {
    my $input = shift;
    # do something with $input
    my $output = $input . " was the input!";
    return( $output );
}
 
sub Show_HTML {
    my $html = <<EOHTML;
    <HTML>
    <BODY>
     Enter something:
     <input type="text" name="val1" id="val1"
     onkeyup="exported_func( [’val1’], [’resultdiv’] );">
     #注意,这个地方.exported_func的函数是上面关联的内容.其中之一val1是DOM中的ID为val1的内容.resultdiv是id为resultdiv的内定.
    #val1是源,是输入.resultdiv为输出.输出后的内容会放到id为resultdiv的div中.
    <br>
    <div id="resultdiv"></div>
    </BODY>
    </HTML>
    EOHTML;
    return $html;

perl的CGI::Ajax注意

最重要的内定.多个输入,输入的内容为dom中的中的id的值.目的为输出时的dom的值.

onClick=”JSFUNC(['source1','source2'], ['dest1','dest2']);”

如果你想自己控制输出,可以在输入的时候['resultdiv'] ,写成一个javascript的函数,用那个函数对输出进行了处理.如下

onClick=”exported_func(['input1'],[js_process_func]);”

ajax中文的处理

my @headers=( “text/html; charset=UTF-8″, );
print $ajx->build_html( $cgi, \&Show_HTML ,@headers);#记的@headers前不要加\,那样就变成了引用,中文还是会不正常的.

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 使用python/casperjs编写终极爬虫-客户端App的抓取 (累计阅读 12,961)
  2. YSLOW法则中,为什么yahoo推荐用GET代替POST? (累计阅读 11,838)
  3. JSONP与POST方式请求 (累计阅读 11,294)
  4. jQuery插件---轻量级的弹出窗口wBox. (累计阅读 10,772)
  5. perl更新/修改/删除文本文件内容 (累计阅读 10,648)
  6. 10个强大的Ajax jQuery文件上传程序 (累计阅读 8,853)
  7. perl大牛flw传说 (累计阅读 7,714)
  8. AWStats是一个基于Perl的WEB日志分析工具。 (累计阅读 7,175)
  9. perl模块Getopt::Std用法及实例-从命令行读取参数模块 (累计阅读 7,018)
  10. [Perl] Template::Toolkit 模板技术. (累计阅读 6,345)