2015-02-02 3 views
0

У меня есть приложение на Yii. Я хочу реализовать ajax-вызовы при нажатии div. Я нашел docs с подтверждением формы ajax, но для меня это не ясно, как я могу делать то, что хочу. Это то, что я сделал:Yii Ajax при нажатии

$(document).on('click','div.lessonDiv', function() 
    { 
     $.ajax(
     { 
      type: "POST", 
      url: "../../protected/controllers/AjaxController.php", 
      success: function(data, textStatus, jqXHR) 
      { 
       console.log(data); 
      } 
     }); 
} 

Это говорит о том, что каталог запрещен. Где я должен помещать файл, который может взаимодействовать с ajax? Или это у него есть?
UPDATE Я использую версию 1.1.

+0

Когда вы спрашиваете об Yii, уточните, какую версию вы используете - 1 или 2. Важно, что версия 1.1 по-прежнему широко используется – oxfn

ответ

2

Вы не должны вызывать файлы напрямую, Yii не работает таким образом. Это MVC-структура с контроллерами и действиями, и она использует маршруты, также для запроса AJAX. Поэтому вы должны добавить действие в AjaxController и позвонить по телефону createUrl, чтобы получить его 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); 
     } 
    }); 
}); 

Я бы рекомендовал читать Yii guide более внимательно. Он также доступен в Russian

+0

И где я должен поставить AjaxController? –

+0

@SergeyScopin в 'protected/controllers/AjaxController.php'. Это очень простой материал, RTFM – oxfn

+0

Я знаю, где я должен поместить все контроллеры. Я предположил, что есть какое-то особое место для ajax. Спасибо за помощь. –

2

Попробуйте

$(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); 
      } 
     }); 
}); 
    }); 

Чтобы узнать о createUrl() в YII нажмите here

Смежные вопросы