This is just a simple tutorial for creating an ajaxLink in Yii. Since I looked all around and there wasn’t anything this straightforward, I thought I’d write it up myself. Feel free to add any comments or suggestions. My goal is to create a link that passes data through POST to one of my controller actions using the Yii AJAX interface. While researching how to do this the “Yii” way, I found no less than 5 different examples, none of which worked, and none of which purported to do exactly what I was looking to do. If you’re just looking for the simple example, here it is. In view that contains the link:
echo CHtml::ajaxLink( "Link Text", Yii::app()->createUrl( 'myController/ajaxRequest' ), array( // ajaxOptions 'type' =>; 'POST', 'beforeSend' => "function( request ) { // Set up any pre-sending stuff like initializing progress indicators }", 'success' => "function( data ) { // handle return data alert( data ); }", 'data' => array( 'val1' => '1', 'val2' => '2' ) ), array( //htmlOptions 'href' => Yii::app()->createUrl( 'myController/ajaxRequest' ), 'class' => $class ) );
Make sure to allow the user access to the particular action you’re calling through your AJAX request.
In the MyController.php file:
public function accessRules() { return array( array('allow', 'actions'=>array('ajaxrequest'), 'users'=>array('@'), ), // ... array('deny', // deny all users 'users'=>array('*'), ), ); } Now let’s handle that request shall we? Further along in MyController.php: public function actionAjaxRequest() { $val1 = $_POST['val1']; $val2 = $_POST['val2']; // // Perform processing // // // echo the AJAX response // echo "some sort of response"; Yii::app()->end(); }