Perl的Ajax實現與中文問題

來源:互聯網
上載者:User
ajax|perl|問題|中文

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' ><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,改起來也很容易的。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.