Code IgniterとxajaxのPHPでの組み合わせ(・∀・)イイ!!

PHP, JavaScript, AJAX, CodeIgniter

00:34:36, by admin Email , 257 words, 16864 views   Japanese (JP)

del.icio.us
xajaxがあったら、YUI(Yahoo! UI Library)はいいかな。

(ノ・・)ン。。。。。。(((●コロコロッ

CodeIgniterは以前話したRuby on railsライクなフレームワーク。
これにはデフォルトでAjaxフレームワークがついていない。
ということでビルトインに適したものを探していると、
xajaxというキーワードにたどり着いた。


xajaxとは?
PHPとAJAXをシームレスに取り扱うPHP&JavaScriptライブラリ群。
AJAXを通してサーバ上のPHPの関数が使えるようなイメージで、
PHPerな人達には違和感なく利用できるだろう。
GET, POSTのリクエストに対応。


PHPの関数(メソッド)を作って、
それをAjax経由で実行し、
その結果をAjaxを通してブラウザに表示する。
ライブラリサイズも非常に小さく、
軽量フレームワークのCode Igniterにちょうど良い。



ということで組み合わせてみた。

[More:]


Code Ingniterのwikiに説明文があるのだが、
多少古いのかその通りやるとうまくいかない。
ということで初めから書いてみることにした。
以下の[root]とはCode Igniterのインストールディレクトリのことである。

まずやらなければいけないことは
Configのglobal_xss_filteringをfalseにする
$config['global_xss_filtering'] = false;

やらないと日本語ではまります。

まず、[root]ディレクトリにxajax_jsというディレクトリを作成し、
xajaxのjavascriptライブラリを置く。
[root]/xajax_js
/xajax.js


次に、[root]/system/librariesディレクトリに
xajaxというディレクトリを作成しライブラリファイルを置く。
[root]/system/libraries/xajax
/xajax.inc.php
/xajaxCompress.php
/xajaxResponse.inc.php


次に、[root]/system/initディレクトリにinit_xajax.phpを作成する。
[root]/system/init/init_xajax.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

if ( ! class_exists('xajax'))
{
require_once(BASEPATH.'libraries/xajax/xajax.inc'.EXT);
}

$obj =& get_instance();
$obj->xajax = new xajax();
$obj->ci_is_loaded[] = 'xajax';

?>



最後はコントローラとビューを設置し呼び出す。
view
<html>
<head>

<title>Welcome to Code Igniter</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<?=$xajax_js?>

</head>

<body>
<?=$content ?>

</body>
</html>


Controller
<?php

class Test extends controller {
/*
* xajax
*/
function xajax()
{
function test_function($number) {
$objResponse = new xajaxResponse();
$objResponse->addAssign("SomeElementId","innerHTML", "Xjax is working. Lets add: ".($number+3));
return $objResponse->getXML();
}

$this->load->library('xajax');

$this->xajax->registerFunction("test_function");

$this->xajax->processRequests();

$template['xajax_js'] = $this->xajax->getjavascript(null, '/xajax_js/xajax.js');

$template['content'] = '<div id="SomeElementId"></div><input type="button" value="test" onclick="xajax_test_function(2);">a';

$this->load->view('test/xajax', $template);
}
}


?>





結果には”test”というボタンがあって、
内容を押すと2+3の結果が表示されるという簡単なもの。
ただ、これほど簡単な実装でAjaxを利用できるのはかなり珍しい。
最初から実装を謳っているものでも、
面倒くさいものも中にはある。



試しにこんなものを作ってみた。
追証計算機
http://asset.dozo.st/log/Foreign-Exchange/eid72.html



Trackback address for this post:

http://hain.jp/htsrv/trackback.php/29

Comments, Trackbacks:

Comment from: 浜村拓夫 [Visitor] · http://hamamuratakuo.blog61.fc2.com/blog-entry-101.html
xajaxをCodeIgniterで使うTipsが参考になりました!
どうもありがとうございます☆(・∀・)
PermalinkPermalink 2007/07/02 @ 21:27
Comment from: admin [Member]
一年も前の記事で内容はあまり覚えてないッスが。

最近のCodeigniterブーム(?)はちょっと嬉しいですねぇ。
PermalinkPermalink 2007/08/24 @ 09:59

Leave a comment:

Your email address will not be displayed on this site.
Your URL will be displayed.

Allowed XHTML tags: <p, ul, ol, li, dl, dt, dd, address, blockquote, ins, del, span, bdo, br, em, strong, dfn, code, samp, kdb, var, cite, abbr, acronym, q, sub, sup, tt, i, b, big, small>
(Line breaks become <br />)
(Set cookies for name, email and url)
(Allow users to contact you through a message form (your email will NOT be displayed.))
This is a captcha-picture. It is used to prevent mass-access by robots.

Please enter the characters from the image above. (case insensitive)

powered by b2evolution

shinobi

Neighbors
Relative
Favorites

極論istの技術屋を始めて早幾年。 流れの速い業界の波にもまれながらも精一杯生きている様をとくとごらんあれ。

Archives
スポンサー

Latest bookmark
Search

Categories

Who's Online?
Misc
Syndicate this blog XML

Valid XHTML 1.0! Valid CSS! Valid RSS 2.0! Valid Atom 1.0!