2013-08-12 8 views
0

У меня есть страница, в которой перечислены билеты/запросы, сделанные пользователями. Каждый билет имеет связанные заметки, которые я хочу отображать, когда пользователь нажимает на билет. (Я хочу использовать CJuiDialog для этого).Yii 403 on Ajax call

Чтобы сохранить время загрузки страницы, я хочу использовать ajax для заполнения диалогового окна.

Я использую следующий код, который всегда возвращает ошибку: «else: undefined». Консоль Хрома однако возвращает ошибку: Не удалось загрузить ресурс: сервер ответил со статусом 403 (Forbidden)

$.ajax({ 
    url: '<?php echo Yii::app()->createAbsoluteUrl("tblTickets/AjaxDialog"); ?>', 
    type: "POST", 
    data: {tno: tid}, 
    error: function(xhr,tStatus,e){ 
     if(!xhr){ 
      alert(" We have an error "); 
      alert(tStatus+" "+e.message); 
     }else{ 
      alert("else: "+e.message); // the great unknown 
     } 
    }, 
    success: function(resp){ 
     alert('success'); // deal with data returned 
    } 
}); 

Есть ли что-то дополнительно мне нужно, чтобы заставить его работать?

EDIT: Я сделал дополнение к accessRules, результатом которого стало изменение. Я больше не получаю ошибку 403, кроме 500 ошибок. Я новичок в Yii, я пытаюсь вызвать функцию внутри TicketsController под названием actionAjaxDialog через ajax.

EDIT2: Ошибка Okay 500 была вызвана функцией PHP, которую она вызывала. Кажется, теперь работает ajax! Но у меня все еще есть проблема. Я не могу заставить его передать данные. Я всегда получаю Ошибку «Undefined индекса»

+0

Проверить погоду ссылка работает правильно ?? – Ninad

+0

привет, см. Редактирование оригинального сообщения – James

+0

Я только что попробовал это, обновлял свой пост, когда вы отправляли сообщения. Я нашел проблему, вызвав ошибку 500. – James

ответ

0

Найден способ сделать это. Ajax был в порядке.

Вместо внутри контроллера мне нужно обновить функцию accessRules, добавив «ajaxdialog» в разрешенных действий для правильной группы пользователей

array('allow', // allow all users to perform 'index' and 'view' actions 
    'actions'=>array('index','view','ajaxdialog'), 
    'users'=>array('*'), 
), 
0

Мы используем это ниже код, как:

<?php 
Yii::app()->clientScript->registerScript('search', " 
    $.ajax({ 
        url: '".Yii::app()->createUrl("/invoice/create")."', 
        data:'tid='+tname, 
        success: function(){ 
         alert('success'); 
         return false; 
        } 
       }); 
"); 
?> 

Надеется, что это поможет вам.

+0

Привет, этот код работает, как в I, я больше не получаю запрещенных ошибок. Но он вызывает при загрузке страницы. Как я могу вызвать его при нажатии элемента? – James

0

попробовать это работает для меня

$.ajax({ 
      url:"<?php echo Yii::app()->createUrl('/controllername/actionname');?>", 
      data:{},//data for throwing the expected url 
      type:"POST",//you can also use GET method 
      dataType:"html",//you can also specify for the result for json or xml 
      success:function(response){ 
       $('#news').html(response); 
      }, 
      error:function(){ 
       alert("Failed request data from ajax page"); 
      } 
     });