@evgen9586
Backend-dev. Лублу Enterprise и не люблю понты)

Как правильно обработать Аякс в Yii2?

В общем сделал так чтобы по событию(Изменение даты) аяксом на сервер отсылало эту дату.

Javascript
$(function () {

    $('#datetimepicker1').datetimepicker(
        {format: 'DD.MM.YYYY', locale: 'ru'}


	);

    $('#datetimepicker1').on("dp.change", function ()
    {

        var bes = $(".form-control").val()

        $.ajax(
            {
                url:window.location,
                data: {a:bes},
                type: 'POST',
                success: function (res) {
                    console.log(res);
                },
                error:function () {
                    alert('Error');
                }
            }
        );
    });
});


Теперь мне нужно это значение обработать и вернуть массив
Думал сделать вот так

Контроллер
class CategoryController extends Controller
{
    public function actionViewdoc($id=null)
    {
        $id = Yii::$app->request->get('id');

       if (Yii::$app->request->isAjax && Yii::$app->request->isPost)
       {
           $carddoc = Yii::$app->request->post('a');
           return Cards::find()->where(['doctor_id' =>$id],['data' =>$carddoc)->asArray()->all();
       }




        $doc = Doctor::find()->where(['id' =>$id])->asArray()->all();

        return $this->render('viewdoc' ,compact('doc'));

    }
}


Но так не работает. Что я делаю не так? Мне нужно выбрать данные на основе данных с аякса. И вернуть уже массив. В моём случае массив талонов
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Arik
POST должен менять состояние приложение, зачем вы через него просите данные? тут лучше GET
if (Yii::$app->request->isAjax && Yii::$app->request->isPost) {
    $carddoc = Yii::$app->request->post('a');
    $cards = Cards::find()->where(['doctor_id' => $id, 'data' => $carddoc])->asArray()->all();
    return $this->asJson($cards);
}
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы