WEBサイト制作サービスWEBsite Design service
WEBサイト制作のAjaxによるサンプルプログラム
Ajaxによるファイル読込みのサンプルプログラムと文字化け調査
◇ Ajaxとは ◇
- Asynchronous Javascript + XMLの略
- クライアント側でフォーム入力した内容をサーバーで処理してその結果をクライアント側に表示するような同期した処理とは違い、クライアントとサーバーとの非同期通信を利用したもので、データ入力中に該当データ検索表示のようなインターラクティブな操作が実現できます。
- クライアント側(ブラウザ)のDHTML(JavaScript+CSS)とXML HttpRequestに、サーバー側のWEBアプリケーションを加えあわせた処理をいう。
◇ Ajaxの利用可能な環境と文字化け状況(調査結果)◇(2007.3.14に追加確認)
- 調査環境(サーバー側):windows2000server+IIS5.0+Active Perl5.6.1
- 調査環境(クライアント側):Windows-xp sp2 と Macintosh(OS9.2.2 及び OS-X.3.9)
- Windowsブラウザ:Internet Explorer6.0 /7.0, Netscape Navigater7.1
- Macintoshブラウザ(OS9/OS-x):Internet Explorer5.1/5.2(注.1),
Netscape Navigater7.0/7.1 , OS-XのみSafariを追加
- テキスト形式:Shift-JISコードで作成し、各アイテムをTAB区切りで、1データは改行で区切ったもの
| データタイプ |
ブラウザ利用環境 |
I.E.(注.1) |
N.N. 7.0x/7.1 |
Opera 9.0x |
Firefox 1.5 |
Safari |
プレーンテキスト
Sfift-JISコード→UTF-8変換 |
Windows-xp |
◎ |
◎ |
◎ |
◎ |
- |
| Macintosh OS9 |
× 動作せず |
× 文字化け |
(未テスト) |
(未テスト) |
- |
| Macintosh OS-X |
× 動作せず |
◎ |
◎ |
◎ |
×
文字化け |
XMLデータ形式
Sfift-JISコードで変換無し |
Windows-xp |
◎ |
◎ |
◎ |
◎ |
- |
| Macintosh OS9 |
× 動作せず |
◎ |
(未テスト) |
(未テスト) |
- |
| Macintosh OS-X |
× 動作せず |
◎ |
◎
|
◎ |
◎
(注.2 △) |
- 1.Ajaxが利用できる環境は、Windows,Macintoshの両方で正常に動作するのは、Netscape Navigater7.x のみ。
- 2.Internet Explorerの場合は、Windowsのみ正常動作(I.E.6.0)、Macintoshは、全く動作せず(I.E.5.x)
- 3.Safari(OS-X)の場合は、UTF-8にコード変換したプレーンテキストでは文字化けする。
XMLでは文字化けしないがJavaScriptの<a href="javascript:xxx"...>のFuction動作しない。((注.2)ver. 1.3.1以前のもの)
- safari 1.3.1のバージョンアップしたものは、正常に動作するようになった。(2005.9.5に確認)
- 4.プレーンテキストをUTF-8にコード変換してもN.N.のMacintoshでは文字化けするので、XMLデータ形式での通信がよい。
- 5.クライアント側とサーバー側の両方とも「UTF-8」エンコードの場合も、文字化け等の動作結果は、変わらない。
Ajaxのプレーンテキストを読み込むサンプル
- サーバー側にあるプレーンテキスト(Shift-JIS)を読み込んで、UTF-8にコード変換したデータをクライアント側で表示するもの。
- JavaScriptで「xmlhttp.responseText」を利用
Ajax File-read Sample
◆ Ajaxによるテキストファイル読み込み(utf-8コード変換して、表示する例) ◆
⇒以前のニュース読込
|
- サーバー側:Perl/CGI例:webnews.cgi
#!/usr/local/bin/perl
#------------------------------------------------------------------------------------#
# 2005.6.24 CXMedia Inc.作成 Ajaxによるファイル読込:utf-8コード変換付き
#------------------------------------------------------------------------------------#
#use strict;
use Jcode;
use CGI qw(:standard);
$fid = param('fid'); #$fid = "site_new.txt";
$file_id = 'news/'.$fid;
&read_file();
exit;
#----------------------------------#
# ファイル読込
#----------------------------------#
sub read_file{
open(AJAX,"<$file_id");
@logs = ;
close(AJAX);
print "Content-Type: text/html\n\n";
foreach $news(@logs){
$news = jcode($news)->utf8; #アイテムをutf-8に変換する
print $news;
}
}
|
AjaxのXMLテキストを読み込むサンプルプログラム
- サーバー側にあるプレーンテキスト(Shift-JIS)を読み込んで、XML形式にしたデータをクライアント側で表示するもの。
- JavaScriptで「xmlhttp.responseXML」を利用
- プログラムリンクのパラメータを追加する場合、"&"を利用するが、XMLデータではエラーとなるので、サーバー側で文字列表現の"&amp;"に変換して、送信することが必要。(<,>も同様)
Ajax File-read XML Sample
◆ Ajaxによるテキストファイル読み込み(xml形式にして、表示する例) ◆
⇒以前のニュース読込
|
- サーバー側:Perl/CGI例:webnews_xml.cgi
#!/usr/local/bin/perl
#----------------------------------------------------------------------------#
# 2005.6.24 CXMedia Inc.作成 Ajaxによるファイル読込:XMLデータの生成
#----------------------------------------------------------------------------#
#use strict;
use CGI qw(:standard);
$fid = param('fid'); #$fid = 'site_new.txt';
$file_id = 'news/'.$fid;
&read_file();
exit;
#-------------------------------------------#
# Textファイル読込して、xmlデータ作成
#-------------------------------------------#
sub read_file{
open(AJAX,"<$file_id");
@logs = ;
close(AJAX);
print "Content-Type: text/xml\n\n";
print "\n";
print "\n";
foreach $news(@logs){
#--xmlでは"<,>,&"があるとエラーとなるため文字列表現に置換--#
$news =~ s/</g;
$news =~ s/>/>/g;
$news =~ s/&/&/g;
printf('%s',$news);
}
print "\n";
}
|
- クライアント側(UTF-8)+ サーバー側(UTF-8):JavaScript例:
サンプル実行(XML)
(注:HTMLを「UTF-8」で記述したもので、サーバー側で「Shift-JIS」のファイルを「UTF-8」にコード変換して表示するもの。動作結果は、「Shift-JIS」のものと同じ。 2007.2.1追加)