[Perl Module] perl模块之CGI::Ajax来实现异步通信

Jan 3rd, 2010

转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]

本文链接: http://www.php-oa.com/2010/01/03/perl-cgiajax.html

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 = <
    
     Enter something:

     #注意,这个地方.exported_func的函数是上面关联的内容.其中之一val1是DOM中的ID为val1的内容.resultdiv是id为resultdiv的内定.
    #val1是源,是输入.resultdiv为输出.输出后的内容会放到id为resultdiv的div中.
    
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前不要加\,那样就变成了引用,中文还是会不正常的.
Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪 ViVi 365Key 网摘 天极网摘 和讯网摘 博拉网 POCO 网摘 饭否 QQ 书签 Digbuzz 我挖网 Mister Wong
No comments yet.