Я использую следующую форму для добавления продукта в корзину покупок. Проблема, с которой я столкнулась, заключается в том, что после добавления продукта она не перенаправляется в корзину покупок, а просто показывает страницу с продуктом, успешно добавленным уведомлением.
здесь форма:
<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');
(или он слишком быстро перемещается в корзину покупок)
спасибо за любую помощь
Сначала удалите атрибут 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?
console.log(json)
в функции успеха, также добавьте функцию добавления ошибки в ajax, если ничего не происходит с console.log, а затем напечатайте ошибку
Я не уверен, где находится элемент с идентификатором "personalVirtualPrivateServerForm", но нажатие кнопки не обязательно позволяет выполнить попытку e.preventDefault().
В вашем случае вы по существу говорите, что при нажатии кнопки выполняете действие, но вы хотите сказать что-то вроде:
$('form#addToCartForm').submit(function(e) {
e.preventDefault();
.... (rest of code here) ....
});
В основном, ваша форма отправляется, прежде чем у вас есть возможность перенаправить, когда вы хотите остановить отправку формы, а затем отправить ее через ваш $.ajax submit. Это должно позволить вашему успешному обратному вызову выполнить.