Skip to content
World Wide Web Server edited this page Jul 4, 2012 · 29 revisions

Category:Libraries Category:Libraries::AJAX

[url=http://www.metz.se/tinyajax]TinyAjax[/url] is a small php5 library that allows you to easily add AJAX-functionality to existing pages and create new AJAX-enabled pages with just a few lines of code.

  • Put the include/TinyAjax.php and TinyAjaxBehavior.php into system/application/libraries/
  • Put the include/TinyAjax.js into the "top-level directory"/js directory
  • Put the following code into system/application/init/init_tinyajax.php [code]<?php if(!defined('BASEPATH')) exit('No direct script access aellowed');

if (!class_exists('TinyAjax')) { define('TINYAJAX_PATH', BASEPATH.'application/libraries/'); require_once(TINYAJAX_PATH.'TinyAjax'.EXT); }

$obj =& get_instance(); $obj->tinyajax = new TinyAjax(); $obj->tinyajax->setScriptPath('../../js'); $obj->tinyajax->setRequestType('post');

?>[/code]

[h3]Example of use[/h3] A simple multiplication example. Here is the Controller. [code]<?php class Ajax extends Controller {

function Ajax()
{
    parent::Controller();
    $this->load->library('tinyajax');
}    

function ajax_multiply($x, $y)
{
    return $x*$y;
}        
       
function multiply()
{    
    $this->tinyajax->showLoading();
    $this->tinyajax->exportFunction("ajax_multiply", array("first_id", "second_id"), "#third_id", $this);
    
    $this->tinyajax->process();
    $this->load->view('ajax_multiply');
}    

} ?>[/code]

And here is the ajax_multiply.php views file: [code]<html> <head> <? $this->tinyajax->drawJavaScript(false,true); ?> </head> <body> Multiply:
<input type="text" id="first_id" value="2"> * <input type="text" id="second_id" value="3"> = <input type="text" id="third_id" value=""> <input type="button" value=" * " onclick="ajax_multiply()"> </body> </html>[/code]

[h3]Example with Behavior[/h3] Add this code to the controller: [code]
function ajax_multiplyb($x, $y) { $res = $x * $y; $res_text = "Multiplying $x and $y results in $res";

  $tab = new TinyAjaxBehavior();
  $tab->add(TabSetValue::getBehavior("third_id", $res));
  $tab->add(TabInnerHtml::getBehavior("result_div", $res_text));
  return $tab->getString(); 

}

function multiplyb()
{    
    $this->tinyajax->showLoading();
    $this->tinyajax->exportFunction("ajax_multiplyb", array("first_id", "second_id"), null, $this);
    
    $this->tinyajax->process();
    $this->load->view('ajax_multiplyb');
}

[/code]

And the views file ajax_multiplyb.php look like this: [code]<html> <head> <? $this->tinyajax->drawJavaScript(false,true); ?> </head> <body> Multiply:
<input type="text" id="first_id" value="2"> * <input type="text" id="second_id" value="3"> = <input type="text" id="third_id" value=""> <input type="button" value=" * " onclick="ajax_multiplyb()">

 
</body> </html>[/code]

It seems that this code doesn't work on CI 1.5.1 because the init folder is now deprecated

So , here is the solution I use : no mater the /init/init_tinyajax .php file

instead , edit the TinyAjax.php file and

1 - add the folowwing line in the class constructor $this->setScriptPath('../../js'); $this->setRequestType('post');

2 - replace the first lines used to detect the TINYAJAX_PATH constatnt by : define('TINYAJAX_PATH', BASEPATH . 'application/libraries/');

so the begining of this files will look like :

/* ... comments ... */ define('TINYAJAX_VERSION', '0.9.5'); define('TINYAJAX_PATH', BASEPATH . 'application/libraries/'); require_once (TINYAJAX_PATH . '/TinyAjaxBehavior.php'); .....

You also have to change the name of the default action in the controleur because the "index" method is not present and you will get an error for that , just replace the name of the "multiply" function by "index" in the controler file

Clone this wiki locally