Добрый день. Заранее спасибо за идеи по решению проблемы.
JS-код вызывается без ошибок, но всегда при изменении чекбокса выводится AJAX error.
Похоже, вызов action’а блокируется, хотя неAJAX-овские действия index, view, … работают.
Принципиально так же построенный код в другом контроллере и другом представлении срабатывает нормально.
Отличия от успешно работающего контроллера, которое я вижу, это то, что в неработающем представлении имеется форма, у которой ‘enableAjaxValidation’=>true. Однако даже при ‘enableAjaxValidation’=>false все равно не работает код из action.
В контроллере:
public function filters()
{
return array(
'accessControl', // perform access control for CRUD operations
'postOnly + delete', // we only allow deletion via POST request
'ajaxOnly + r_users + r_bidtypes',
);
}
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array(),
'users'=>array('*'),
),
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions'=>array(),
'users'=>array('@'),
),
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('index','view','create','update','users','remove','revoke','deleted','r_users','r_bidtypes','delete','admin'),
'users'=>array('admin'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
...
public function actionR_users()
{
$response = array('message'=>'ОК');
echo json_encode($response);
}
Во view:
Yii::app()->clientScript->registerScript('checkboxes', "
$(function() {
$('input:checkbox[id^=\"chtp_\"]').click(function()
{
r = $('#r').val();
p = $('#p').val();
t = $('#t').val();
c = ($('#chtp_'+t).is(':checked'))?'checked':'';
//проверено - все переменные r, p, t, c инициализируются нормально
$.getJSON('".$this->createUrl('roles/r_users')."', {\"t\":t,\"p\"<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/tongue.gif' class='bbc_emoticon' alt=':P' />,\"r\":r,\"c\":c})
.done(function(msg)
{
alert(msg['message']);
})
.fail(function()
{
alert('AJAX error!!!');
});
}) //input:checkbox[id^=\"chk_\"]
...
});
");