@hollanditkzn

Как сделать правильно ajax запрос?

Не могу сделать ajax запросы, постоянно выводит на ссылку POST http://crm/custom/[object%20Object] 404 (Not Found) Но не понятно почему по такому адресу он переводит даныне
Форма реализации я сделал так в контроллере
public function actionAdop()
    {
        $models = [new Custom()];
        $request = Yii::$app->request;
        $data = $request->post('Custom', []);
        foreach (array_keys($data) as $index) {
            $models[$index] = new Custom();
        }
        if ($request->isAjax && $request->post('ajax') != null){
            Model::loadMultiple($models, $request->post());
            Yii::$app->response->format = Response::FORMAT_JSON;
            $result = ActiveForm::validateMultiple($models);
            return $result;
        }
// загружаем данные из запроса в массив созданных моделей
        if (Model::loadMultiple($models, Yii::$app->request->post())) {
            foreach ($models as $model) {
                //сохраняем данные
                if (!$model->save()){
                    echo false;
                    print_r($model->getErrors());
                } else {
                    $model->save();
                }
            }
            echo true;
        }
        $searchModel = new CustomSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams, 'adop');

        return $this->render('adop', [
            'dataProvider' => $dataProvider,
            'models' => $models,
        ]);
    }

В виде
<?php $form = ActiveForm::begin([
        'id' => 'custom-form',
        'enableAjaxValidation'      => true,
        'enableClientValidation'    => false,
        'validateOnChange'          => false,
        'validateOnSubmit'          => true,
        'validateOnBlur'            => false,
    ]); ?>
    <div id="customForm">
        <?= TabularInput::widget([
            'models' => $models,
            'attributeOptions' => [
                'enableAjaxValidation'      => true,
                'enableClientValidation'    => false,
                'validateOnChange'          => false,
                'validateOnSubmit'          => true,
                'validateOnBlur'            => false,
            ],
            'columns' => [
                [
                    'name' => 'id_tovar',
                    'type' => Select2::className(),
                    'title' => 'Товар',
                    'options' => [
                        'data' => ArrayHelper::map(Tovar::find()->all(), 'id', 'name'),
                        'pluginOptions' => [
                            'allowClear' => true
                        ],
                        'options' => ['placeholder' => 'Выберите товар']
                    ]
                ],
                [
                    'name' => 'number',
                    'type' => 'textInput',
                    'title' => 'Кол-во',
                    'options' => [
                        'type' => 'number',
                        'min' => '0'
                    ]
                ],
            ],
        ]) ?>

    </div>
    <div class="form-group">
        <?= Html::submitButton('Создать', ['class' => 'btn btn-success']) ?>
    </div>

    <?php ActiveForm::end(); ?>
<?php Pjax::begin([
        'id' => 'pjax-custom_adop'
    ]) ?>
...
    <?php Pjax::end() ?>

В js файле
$(document).ready(function(){
$('#custom-form').submit(function (e) {
           $.post({
               url: 'http://crm/custom/adop',
               data: $(this).serialize(),
               dataType: 'json',
            }).done(function (result) {
                if (result === true){
                    $.pjax.reload({container: '#pjax-custom_adop'});
                } else {
                    $('.multiple-input').html(result);
                }
           }).fail(function () {
               console.log('Сервер не отвечает');
           })
       });
});

И как поступать в данный момент?
  • Вопрос задан
  • 278 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

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

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