@bk_maestro

Собственный Ajax запрос в yii2?

Необходимо сделать сортировку по датам.
Делаю через самописный календарь. Его суть очень проста - получает значение поля, куда кликнул юзер и путем ajax запроса передать в контроллер, который отрендерит таблицу с данными.
Проблема заключается в том, что необходимо указать правильный путь до контроллера.

$('.month').click(function() {
    var date = $(this).text();

    $.ajax({
        url: '/user/admin/apartment?action=new',
        date: date,
        method: 'post',
        dataType: 'json',
        success: function () {
            alert('success');
        },
        error: function (response) {
            console.log(response);
        }
    })
});
  • Вопрос задан
  • 764 просмотра
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
Тут, как минимум, два варианта.
Самый простой это сформировать переменную с адресом и передать в js, при этом надо правильно подключить js
$url = Utl::toRoute(// путь к Вашему контролеру/действию.);
$this->registerJs(
"
$('.month').click(function() {
    var date = $(this).text();

    $.ajax({
        url: '".$url."',
        date: date,
        method: 'post',
        dataType: 'json',
        success: function () {
            alert('success');
        },
        error: function (response) {
            console.log(response);
        }
    })
});
", yii\web\View::POS_END)

Это если js находится в том же файле.
Если js у Вас вынесен в отдельный файл, то я бы добавил дополнительный параметр, например к ссылке, в котором хранился бы url. При клике по ссылке читал бы этот параметр и формировал из него url для ajax запроса.
Пример:
php
Html::a('Link', $url, ['data' => ['ajaxurl' => Url::toRoute(// путь к контролеру/действию)]])

js
$('a').on('click', function(){
  var url = $(this).attr('data-ajaxurl')
 $.ajax({
    url: url
 })
})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы