@symply_rabbit

Почему через ajax передается значение на шаг меньше?

ДОБрый день! подскажите пожалуйста в чем мой косяк может быть. код выполняется но с ошибкой.

вообщем есть стандартная корзина на решении битрикса. туда нужно дописать невозможность оформить суммой корзины менее 1000 руб, то есть если эта сумма менее 1000 ру надпись "сумма корзины менее 1000 руб" и если более тогда кнопка оформить заказ. при этом в стандартной корзине уже есть функционал что по клику на + и - у товара сумма корзины увеличивается, так что мне нужно чтобы при клике на эти плюсы и минусы моя надпись/кнопка также менялись в соответствии с новой суммой. решил осуществить это с помощью .load

Плюс, минус и спан где меняется ответ в стандартном решении выглядит следующим образом

<a href="#" class="minus" data-id="50"></a>
<input name="qty" type="text" value="1" class="qty" data-max-quantity="80" data-id="50" data-ratio="1">
<a href="#" class="plus" data-id="50"></a>


<span id="allSum">1 280     руб.</span>


написал скрипт следующего содержания
<script type="text/javascript">


$('.plus').click(function {

		
 $("#bookbutcart").load("/bitrix/templates/dresscode/components/dresscode/sale.basket.basket/standartOrder/bookbutoon_cart.php"); // замена области в этом файле

	
});


$('.minus').click(function {

$("#bookbutcart").load("/bitrix/templates/dresscode/components/dresscode/sale.basket.basket/standartOrder/bookbutoon_cart.php"); // замена области в этом файле
            
	
});
</script>


Где в файле bookbutoon_cart.php находится код вывода корзины и область на которую заменяется ранее выведеная кнопка/тект. код прилагаю

<?
CModule::IncludeModule("sale");

   $arBasketItems = array();
   $dbBasketItems = CSaleBasket::GetList(
                  array("NAME" => "ASC","ID" => "ASC"),
                  array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL"),
                  false,
                  false,
                  array("ID","MODULE","PRODUCT_ID","QUANTITY","CAN_BUY","PRICE"));
   while ($arItems=$dbBasketItems->Fetch())
   {
      $arItems=CSaleBasket::GetByID($arItems["ID"]);
      $arBasketItems[]=$arItems;   
      $cart_num+=$arItems['QUANTITY'];
      $cart_sum+=$arItems['PRICE']*$arItems['QUANTITY'];
   }
   if (empty($cart_num))
      $cart_num="0";
   if (empty($cart_sum))
      $cart_sum="0";
   ?>
<?/*
   В вашей корзине  <?=$cart_num?> товаров.На сумму <?=$cart_sum?> рублей
 */?>  



<div id="bookbutcart">
<?if ($cart_sum<1000) {?>
Сумма заказа должна быть не менее 1000 руб
<?}
else {?>


		<a href="<?=SITE_DIR?>personal/cart/order/" id="newOrder" class="selected"><img src="<?=SITE_TEMPLATE_PATH?>/images/order.png">Оформить заказ</a>
<?}?>
</div>


код рабочий и все в принципе работает, НО!!! возвращается значение на один клик меньше. чтобы было понятнее приложу скрин
5cbb315555988619693463.png
чтобы исправить эту проблему пробовал привязать к функции settimeout такого рода
function func() {
  alert( 'Привет' );
}
setTimeout(func, 1000);


пробовал также через аякс передавать значение на тот файл где load, код ниже
<script type="text/javascript">
$('.plus').click(function (){
		
 $.ajax({
		type: "POST",
		url: "/bitrix/templates/dresscode/components/dresscode/sale.basket.basket/standartOrder/bookbutoon_cart.php",
                 data: ({summ:$('#allSum').text()}),
cache: false,
success: function(data) {
		$("bookbutcart").load("/bitrix/templates/dresscode/components/dresscode/sale.basket.basket/standartOrder/bookbutoon_cart.php"); // замена области в этом файле
            },
  });
	
});

$('.minus').click(function (){
		 $.ajax({
		type: "POST",
		url: "/bitrix/templates/dresscode/components/dresscode/sale.basket.basket/standartOrder/bookbutoon_cart.php",
                 data: ({summ:$('#allSum').text()}),
cache: false,
success: function(data) {
		$("bookbutcart").load("/bitrix/templates/dresscode/components/dresscode/sale.basket.basket/standartOrder/bookbutoon_cart.php"); // замена области в этом файле
            },
  });
	
});
</script>


но передается значение опять же на шаг меньше... ГОспода знатоки, помогите, как можно было бы решить данную проблему?
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
@symply_rabbit Автор вопроса
Проблема была в том что на странице запускалось куча куча функций и мой код шел не по той очередности.
поставил у сеттайм аут 3 секунды- так он стал запускаться последней функцией на странице и тогда все получилось. и кроме того нашел где выводится стандатный клик и дописал свой код (вместе с сеттайм аут ) туда

setTimeout(function() { $("#bookbutcart").load("/include/bookbutoon_cart.php"); // замена области в этом файле
                       }, 3000);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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