Я использую переводчик Google, поэтому могут возникать ошибки.
Моя проблема: добавить товар и оставаться на текущей странице
Я попытался воспользоваться советом по ссылке ниже, но у меня ничего не вышло :-(
Добавить элемент и оставаться на текущей странице
Код сценария:
<?php
if ( !defined( 'CUSTOMER_PAGE' ) )
exit;
require_once DIR_SKIN.'_header.php'; // include design of header
?>
<div id = "product">
<?php
if ( isset( $aData['sName'] ) ){ // displaying product content ?>
<script type = "text/javascript">
var sTitle = "<?php echo $aData['sName']; ?>";
var fPrice = Math.abs( "<?php echo $aData['mPrice']; ?>" );
</script><?php
if ( isset( $aData['mPrice'] ) || isset( $aData['sAvailable'] ) ){ // displaying box with price, basket and availability - START
echo '<div id = "box">';
if ( isset( $aData['mPrice'] ) && is_numeric( $aData['mPrice'] ) ){?>
<div id = "price"><em><?php echo $lang['Price']; ?>:</em><strong id = "priceValue"><?php echo $aData['sPrice']; ?></strong><span><?php echo $config['currency_symbol']; ?></span></div><?php
}
elseif ( !empty( $aData['mPrice'] ) ){?>
<div id = "noPrice"><?php echo $aData['sPrice']; ?></div><?php
}
if ( isset( $aData['sAvailable'] ) ){?>
<div id = "available"><?php echo $aData['sAvailable']; ?></div><?php
}
if ( isset( $aData['mPrice'] ) && is_numeric( $aData['mPrice'] ) && !empty( $config['basket_page'] ) && isset( $oPage->aPages[$config['basket_page']] ) ){?>
<form action = "<?php echo $oPage->aPages[$config['basket_page']]['sLinkName']; ?>" method = "post" id = "addBasket" class = "form">
<fieldset>
<legend><?php echo $lang['Basket_add']; ?></legend>
<input type = "hidden" name = "iProductAdd" value = "<?php echo $aData['iProduct']; ?>" />
<input type = "hidden" name = "iQuantity" value = "1" />
<input type = "submit" value = "<?php echo $lang['Basket_add']; ?>" class = "submit" />
</fieldset>
</form><?php
}
echo '</div>';
} // displaying box with price, basket and availability - END
}
?>
</div>
Я переписал код и добавил его ниже:
if ( isset( $aData['sName'] ) ){ // displaying product content ?>
<script type = "text/javascript">
$('#addBasket .submit').click(function() {
var keyValues = {
iProductAdd : $(this).parent().find('input[name = "iProductAdd"]').val(),
iQuantity : $(this).parent().find('input[name = "iQuantity"]').val()
};
$.post('<?php echo $oPage->aPages[$config['basket_page']]['sLinkName']; ?>', keyValues, function(rsp) {
// make your php script return some xml or json that gives the result
// rsp will be the response
});
return false; // so the page doesn't POST
});
</script>
Но все равно не работает, после нажатия на кнопку товар добавляется, но мы не остаемся на той же странице и переходим в корзину.
Буду благодарен за любую помощь
Адам
похоже, что вы помещаете скрипт перед формой, а кнопка в этот момент не существует, поэтому слушатель событий никогда не добавляется к ней. Обернуть в $(function() { /* your code*/})
обновленный ответ, можете ли вы попробовать это ...
$(function() { $("#addBasket").on("submit",function(e) { e.preventDefault(); ... }); });





Вы можете использовать e.preventDefault() вместо return false;
<script type = "text/javascript">
$('#addBasket .submit').click(function(e) {
e.preventDefault();
var keyValues = {
iProductAdd : $(this).parent().find('input[name = "iProductAdd"]').val(),
iQuantity : $(this).parent().find('input[name = "iQuantity"]').val()
};
$.post('<?php echo $oPage->aPages[$config['basket_page']]['sLinkName']; ?>', keyValues, function(rsp) {
// make your php script return some xml or json that gives the result
// rsp will be the response
});
});
Изменить 1:
Вы можете сделать еще кое-что. Вместо типа ввода как submit. сохраните его как button, поскольку я заметил, что вы делаете JSON вручную.
Итак, ваш входной запрос может быть примерно таким
<input type = "button" value = "<?php echo $lang['Basket_add']; ?>" class = "submit" />
По сути, они делают то же самое. Если return false не работает, вероятно, что-то еще не так
нажатие на кнопку ничего не вызывает, в корзину не добавляет, дальше не идет. :-(
Можете ли вы указать keyValues в консоли и посмотреть, создан ли JSON
$(function() { $("#addBasket").on("submit",function(e) { e.preventDefault(); ... }); });Вы можете это попробовать?
$('#addBasket .submit').click(function(event) {
event.preventDefault();
var keyValues = {
iProductAdd : $(this).parent().find('input[name = "iProductAdd"]').val(),
iQuantity : $(this).parent().find('input[name = "iQuantity"]').val()
};
$.post('<?php echo $oPage->aPages[$config['basket_page']]['sLinkName']; ?>', keyValues, function(rsp) {
// make your php script return some xml or json that gives the result
// rsp will be the response
});
return false; // so the page doesn't POST
});
К сожалению, он добавляет в корзину и переходит на свой сайт-корзину, не остается на товаре.
$(function() { $("#addBasket").on("submit",function(e) { e.preventDefault(); ... }); });Слушатель событий не добавляется к кнопке, потому что кнопка не существует, когда тег скрипта находится над формой.
Либо поместите тег скрипта после формы, либо оберните код в "готовы" вызов
$(function(){
$('#addBasket .submit').click(function() {
...
})
Я воспользовался советом: «похоже, вы собираетесь использовать слушателя в будущем. Оберните $ (function () {/ * ваш код * /}) - charlietfl 12 минут назад». Это сработало :-), но у меня все еще есть небольшая проблема, пока я не обновлю свои браузеры, у меня в корзине 0 товаров.
Пожалуйста!! : $(function() { $("#addBasket").on("submit",function(e) { e.preventDefault(); ... }); });
Он работает, но у меня все еще есть небольшая проблема, пока я не обновлю свой браузер вручную или не перейду на другую страницу, у меня в корзине 0 продуктов.
Изучите фактический запрос в сети инструментов разработчика браузера, чтобы убедиться, что отправлено именно то, что вы ожидаете, и проверьте статус запроса и то, что на самом деле возвращается.
Вместо
$('#addBasket .submit')попробуйте с$('#addBasket').on('submit, function(){...