中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > J2EE
实例讲解Perl的Ajax实现与中文问题
作者:chiesa 时间:2006-09-28 11:39 出处:ithelper 责编:月夜寒箫
              摘要:实例讲解Perl的Ajax实现与中文问题

Ajax,最近非常红火的技术。有很多现成的开发工具包。开始的时候我试用了CPAINT,支持php/asp,还不错。后来开始用perl的Ajax实现: CGI::Ajax。对比之下,发现非常好用。主要的特点是程序自动生成javascript调用的代码。这样的话,我们可以专注于程序逻辑的开发,而不用去理睬繁复的Ajax javascript调用。这是CGI::Ajax高明的地方。

CGI::Ajax安装

 

perl -MCPAN -e "install CGI::Ajax"

学习这个简单的例子

 

#!/usr/bin/perl -w use strict;
            use CGI::Ajax; use CGI;

下面是我们这个程序的核心逻辑部分。客户端通过会Ajax调用这个函数,得到想要的结果。

 

sub test_calculate
            {
            my ($cal1,$cal2)=@_;
            return ($cal1+$cal2);
            }

下面是客户端显示的html 注意onclick部分的写法。你可以将其理解为一段伪码(其实不是伪码,其实际代码部分都是CGI::Ajax自动生成的),表示调用函数calculate,参数是val1控件和val2控件的值,结果显示在result控件上。

 

sub Show_HTML
            {
            my $html = <<EOHTML;
            <HTML> <HEAD>
            <title>test</title>
            </HEAD> <BODY>
            <input type='text' name='val1'
            id='val1'> <input type='text'
            name='val2' id='val2'>
            <input type='button'
            name='cal' id='cal'
            value='cal it'
            onclick="calculate(['val1','val2'],
            ['result']);return true;"><br>
            <div id='result'></div>
            </BODY> </HTML> EOHTML return $html;
            }
            my $cgi=new CGI();

这里的代码将刚才提到的伪码calculate和我们的perl实现函数关联起来。这样,当客户端点击时调用calculate伪码,其效应就是程序自动生成的javascript代码就会启动Ajax机制,远程调用我们这个cgi中的test_calculate函数,并得到其结果,输出到相应的页面控件来显示。

 

my $ajax=new CGI::Ajax('calculate'=>\&test_calculate);
            #build_html

这一步中,CGI::Ajax会自动生成html网页和Ajax调用的所有javascript代码。而当客户端通过Ajax调用本程序时,这个build_html函数还会自动调用相应的函数(test_calculate)并且返回结果。

 

print $ajax->build_html($cgi,\&Show_HTML);

一个小问题

在页面的javascript中如果需要使用回车字符或者其他类似字符,那么必须要使用2个斜杠。

中文的问题

我以utf8为例。

1.页面字符集设定

使用下面的调用方式即可。

 

my @headers=("charset=utf8",);
            print $ajax->build_html($cgi,\&Show_HTML,\@headers);

2.返回结果集中文显示乱码

这是CGI::Ajax的小Bug。

解决办法如下:

找到你安装好的Ajax.pm,找到下面这句:

 

my $rv = $self->cgi()->header();

把它改成类似于这样的句子即可:

 

my $rv = $self->cgi()->header("charset=utf8");

当然,更好的办法是使用我们在

 

print $ajax->build_html($cgi,\&Show_HTML,\@headers);

中传递的这个@headers,改起来也很容易的。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有