@akula22

Как сменить URL при ajax отправки формы?

Код для отправки формы для добавления заказа
$js = <<<JS
    $('form').on('beforeSubmit', function(){
        var data = $(this).serialize();
        $.ajax({
            url: '/order/default/add-order',
            type: 'POST',
            data: data,
            success: function(response){
                $('#basket').html(response);
            },
            error: function(){
                alert('Error!');
            }
        });
        return false;
    });
JS;
$this->registerJs($js);

отправляется этим нажатием кнопки
<?= Html::a('<i class="glyphicon glyphicon-shopping-cart"></i>', ['/order/default/add-order'], [
                            'class' => 'btn btn-default pull-right',
                            'data-toggle' => 'tooltip',
                            'data-placement' => 'bottom',
                            'title' => 'Добавить заказ в корзину',
                            'data' => [
                                'confirm' => 'Вы уверены?',
                                'data-method' => 'post',
                            ],
                        ]) ?>


так же мне надо удалять заказы и я создал кнопку удаления
<?= Html::a('<i class="glyphicon glyphicon-trash text-danger"></i>', ['/order/default/delete-order', 'id' => $order->id], [
                    'data-toggle' => 'tooltip',
                    'data-placement' => 'bottom',
                    'title' => 'Удалить заказ из корзины',
                    'data' => [
                        'confirm' => 'Вы уверены?',
                        'data-method' => 'get',
                    ],
                ]) ?>

Но при нажатие заказ все равно добавляется, запрос идет на
url: '/order/default/add-order',

Как мне его сменить при удаление на
/order/default/delete-order ?
  • Вопрос задан
  • 382 просмотра
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
<?= Html::a('<i class="glyphicon glyphicon-trash text-danger"></i>', ['/order/default/delete-order', 'id' => $order->id], [
                    'data-toggle' => 'tooltip',
                    'data-placement' => 'bottom',
                    'title' => 'Удалить заказ из корзины',
                    'data' => [
                        'confirm' => 'Вы уверены?',
                        'data-method' => 'get',
                        'delete-url' => Url::to('/order/default/delete-order');
                    ],
                ]) ?>

При отправки ajax считываете значение "data-delete-url" и добавляете в параметры запроса.
$('form').on('beforeSubmit', function(){
        var data = $(this).serialize();
       
        var url = $(selector).attr('data-delete-url');        

        $.ajax({
            url: url,
            type: 'POST',
            data: data,
            success: function(response){
                $('#basket').html(response);
            },
            error: function(){
                alert('Error!');
            }
        });
        return false;
    });

Возникнут ошибки - подправляйте под свои требования.
Показал саму идею.
Ответ написан
Ваш ответ на вопрос

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

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