技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 其他 --> perl模块之CGI::Ajax来实现异步通信

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

浏览:2875次  出处信息

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. perl更新/修改/删除文本文件内容    (阅读:9437)
  2. 10个强大的Ajax jQuery文件上传程序    (阅读:7757)
  3. perl大牛flw传说    (阅读:6514)
  4. perl模块Getopt::Std用法及实例-从命令行读取参数模块    (阅读:5882)
  5. [Perl] Template::Toolkit 模板技术.    (阅读:5368)
  6. 在perl中连接和使用sqlite做数据存储    (阅读:5056)
  7. ajax-cross-domain    (阅读:4985)
  8. Perl命令行常见用法及技巧    (阅读:4807)
  9. perl模块之MIME::Lite发送有附件的邮件    (阅读:4444)
  10. perl的expect使用方法,实现非交互式登录。    (阅读:4494)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1