unchanged
Title
Update content in AJAX with partialRender
AJAX
The easiest way to update content in AJAX is to use the partialRender method.
For this exemple I have three files: a controller (HelloWorldController.php) and
two views (index.php and _ajaxContent.php)
<br />
#### controllers/HelloWorldController.php
~~~
[php]
class HelloWorldController extends CController
{
public function actionIndex()
{
$data = array();
$data["myValue"] = "Content loaded";
$this->render('index', $data);
}
public function actionUpdateAjax()
{
$data = array();
$data["myValue"] = "Content updated in AJAX";
$this->renderPartial('_ajaxContent', $data, false, true);
}
}
~~~
The actionIndex set myValue to "Content loaded" and this variable is
passed to the view "index.php" and to "_ajaxContent.php"
<br />
*Note: if using accessRules() in your controller file, you will need to modify
accessRules() by adding the appropriate part of the function name to a rule set
- in this case* 'updateajax' *like this:*
array('allow', // allow all users to perform 'index' and
'view' actions
'actions'=>array('index','view','updateajax'),
'users'=>array('*'),
),
#### views/helloWorld/index.php
~~~
[php]
<div id="data">
<?php $this->renderPartial('_ajaxContent',
array('myValue'=>$myValue)); ?>
</div>
<?php echo CHtml::ajaxButton ("Update data",
CController::createUrl('helloWorld/UpdateAjax'),
array('update' =>
'#data'));
?>
~~~
The ajaxButton call "actionUpdateAjax" and the returned data are
inserted in the div "data"
<br />
#### views/helloWorld/_ajaxContent.php
~~~
[php]
<?php echo $myValue ?>
~~~
Display $myValue
<br />
Now, run index.php?r=helloWorld
Enjoy!
### Links
[Russian Version](http://dbhelp.ru/ajax-partialrender-update/page/)