I have some app on Yii. I want to implement ajax calls on click of div.
I've found some docs with form ajax validation, but it'snot clear for me, how can I do what I want. That's what I did:
$(document).on('click','div.lessonDiv', function()
{
$.ajax(
{
type: "POST",
url: "../../protected/controllers/AjaxController.php",
success: function(data, textStatus, jqXHR)
{
console.log(data);
}
});
}
That says that the directory is forbidden. Where should I put file which is able to interact with ajax? Or it alreay has it?
UPDATE I'm using version 1.1.
You shouldn't call files directly, Yii doesn't work this way. It is MVC framework with controllers and actions and it uses routes, also for AJAX request. So you should add an action to AjaxController
and call createUrl
to get it's URL.
PHP
class AjaxController extends CController
{
public funcion actionDoThing()
{
// Get request object
$request = Yii::app()->request;
// Check if request is acceptable
if ($request->isPost && $request->isAjaxRequest)
{
echo CJSON::encode(array('hello'=>'world'));
}
// else
// {
// throw new CHttpException(403);
// }
}
}
JS
$(document).on('click','div.lessonDiv', function() {
$.ajax({
type: "POST",
url: <?php echo $this->createUrl('ajax/doThing'); ?>,
success: function(data, textStatus, jqXHR) {
console.log(data);
}
});
});
I'd recommend to read Yii guide more closely. It is also available in Russian
Try this
$(function(){
$(document).on('click','div.lessonDiv', function()
{
$.ajax(
{
type: "POST",
url: "<?php echo Yii::app()->createUrl('Ajax/index'); ?>",
success: function(data, textStatus, jqXHR)
{
console.log(data);
}
});
});
});
To learn about createUrl() in YII click here