Как проверить успешность и перенаправить веб-страницу после добавления продукта в opencart?

0

Я использую следующую форму для добавления продукта в корзину покупок. Проблема, с которой я столкнулась, заключается в том, что после добавления продукта она не перенаправляется в корзину покупок, а просто показывает страницу с продуктом, успешно добавленным уведомлением.

здесь форма:

<form action="purchase/?route=checkout/cart/add" id="addToCartForm" method="post">
<input type="hidden" name="product_id" value="40">
<input type="hidden" name="quantity" id="quantity_field" value="">
<input type="hidden" name="price" value=>

<input type="submit" alt="Order Now" title="order now" value="Order Now test">
</form>

и javascript-код:

<script>
$(document).ready(function() {
    $('form#addToCartForm input[type="submit"]').click(function(e) {
        e.preventDefault(); // prevent the form from submitting
        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: 'purchase/index.php?route=checkout/cart/add'
            data: 'product_id=' + $('form#addToCartForm input[name="product_id"]').val() + '&quantity=' + $('form#addToCartForm input[name="quantity"]').val(),
            success: function(json) {
                window.location = 'purchase/index.php?route=checkout/cart';
                console.log('add success');
            }
        });
    });
});
</script>

после нажатия на форму переадресация страницы на http://*****/purchase/?route=checkout/cart/add и сообщение страницы читает "{" успех ":" Успех: вы добавили название продукта </a> в вашу корзину покупок </a>! "," total ":" 4 item (s) -\u00a64.40 "}"

Таким образом, он добавляет продукт, но перенаправление на "успех", похоже, ничего не делает.

консоль javascript ничего не выводит с помощью console.log('add success'); (или он слишком быстро перемещается в корзину покупок)

спасибо за любую помощь

  • 0
    Один вопрос, знаете ли вы, что такое jQuery? Вы уверены, что JQuery связан с вашим сайтом? Потому что теперь похоже, что код jQuery не выполняется, и вы отправляетесь на действие формы с помощью обычной отправки (не AJAX) ...
  • 0
    @shadyyx У меня есть ссылка jQuery в <head> </ head> с использованием <script type = "text / javascript" src = "js / jquery-1.6.js"> </ script> этого достаточно? благодарю вас
Показать ещё 1 комментарий
Теги:
opencart

2 ответа

2
Лучший ответ

Сначала удалите атрибут action из формы, его не требуется (и может вызвать путаницу при отладке)

а затем используйте следующий javascript

$('form#addToCartForm').submit(function(e) {
 e.preventDefault();
 $.ajax({
    type: 'POST',
    dataType: 'json',
    url: 'purchase/index.php?route=checkout/cart/add'
    data: 'product_id=' + $('form#addToCartForm input[name="product_id"]').val() + '&quantity=' + $('form#addToCartForm input[name="quantity"]').val(),
    success: function (json) {
        window.location = 'purchase/index.php?route=checkout/cart';
        console.log('add success');
    }

});
});

в вашем вопросе часть вашего запроса ajax закомментирована, действительно ли это так или просто комментируется при публикации SO?

  • 0
    Благодарю. я попробовал ваш код, и похоже, что после удаления атрибута действия из формы он больше не перемещается на страницу http: //***.co.uk/purchase/? route = checkout / cart / add и вместо этого остается на странице оригинальная страница
  • 0
    @ user2588945 так все работает сейчас или нет? попробуйте удалить перенаправление и просто console.log(json) в функции успеха, также добавьте функцию добавления ошибки в ajax, если ничего не происходит с console.log, а затем напечатайте ошибку
1

Я не уверен, где находится элемент с идентификатором "personalVirtualPrivateServerForm", но нажатие кнопки не обязательно позволяет выполнить попытку e.preventDefault().

В вашем случае вы по существу говорите, что при нажатии кнопки выполняете действие, но вы хотите сказать что-то вроде:

$('form#addToCartForm').submit(function(e) {
    e.preventDefault();
    .... (rest of code here) ....
});

В основном, ваша форма отправляется, прежде чем у вас есть возможность перенаправить, когда вы хотите остановить отправку формы, а затем отправить ее через ваш $.ajax submit. Это должно позволить вашему успешному обратному вызову выполнить.

  • 0
    Спасибо! это должно быть «addToCartForm» Я изменил «personalVirtualPrivateServerForm» на это. это была опечатка

Ещё вопросы

Сообщество Overcoder
Наверх
Меню