Как использовать Yii в Ajax

Несколько вопросов:

  1. Как использовать ajax, а точнее передать данные на нужную страницу через js (сделать запрос при получении координат от браузера).

  2. Как при вызове страницы создать нужные данные "без контента" и их вернуть?

Для чего: получаю текущее местоположение пользователя и, если пользователь разрешил (в браузере), то запускаю скрипт, передав в него координаты, а то возвращает карту гугл с метками и тд. (использую компонент egmaps).

Еще совсем новичек, поэтому нечего не шарю.

Спасибо.

Можно просто на странице написать JS код в тегах <script>, на jQuery:


$.post('/site/getData', {x:3, y:5}, function(data){

    alert(data);

}).error(function(e){ 

    $('#place').html(e.responseText);

});

Самый простой способ вернуть чего-нибудь без контента - это тупо echo + exit;

Ну, типа,


public function actionMyaction() 

{

    $result = '';


    ...


    echo $result; // или что-нибудь типа echo CJSON::encode($result). Лично я люблю json

    exit;

}

При этом, правда, не отработает логирование.

Чтобы отработало - заменить exit на Yii::app()->end(), который по сути тот же exit только с обработкой логов. Поскольку при этом Yii может начать сливать логи в выдачу - нужно будет дополнительно настроить компонент CLogRouter.

Полезные всякие штуки:

  1. Проверка на ajax-запрос: Yii::app()->request->isAjaxRequest

  2. рендер только части страницы, вариант 1:


public function actionMyaction() 

{

    if (Yii::app()->request->isAjaxRequest) {

        $this->layout = false;

    }

    ...


    $this->render('myTemplate', array(...));

}

  1. рендер только части страницы, вариант 2:

public function actionMyaction() 

{

    ...


    $this->renderPartial('myPartialTemplate', array(...));

}

Почитай про renderPartial. Особенно обрати внимание на параметры метода.