LINUX.ORG.RU

Мозгов не хватает

 ,


0

1

Вообщим вопрос протертый, но я не знаю почему не могу разобраться.
есть код который меняет количество товара в корзине

 //количество товара в корзине
     $(document).on('click','.minus',function(){
              var $price = parseInt($(this).parent().find('.count-input').data('price'),10);
              var $input = $(this).parent().find('.count-input');
              var count = parseInt($input.val()) - 1;
              count = count < 0 ? 0 : count
              $input.val(count);
              $input.change();
              $(this).parent().parent().find('.count-price_span').html(count*$price+' тг');
              return false;
     });
     $(document).on('click','.plus',function(){
                var $price = parseInt($(this).parent().find('.count-input').data('price'),10);
                var $maxval = parseInt($(this).parent().find('.count-input').data('maxval')); 
                var $input = $(this).parent().find('.count-input');
                count = parseInt($input.val()) < $maxval ? (parseInt($input.val()) + 1) : $maxval;
                $input.val(count);
                $input.change(); 
                $(this).parent().parent().find('.count-price_span').html(count*$price+' тг'); 
                return false;
     });

вот сама верстка.
<div class="top-price">
 <div class="count-block">
     <span class="minus">-</span>
     <div class="count-item">
	<input type="text" class="count-input" name="count" value="1" data-price="<%=item.get('price')%>" data-maxval="5">
       <span class="text">шт</span>
    </div>
    <span class="plus">+</span>
 </div>
 <div class="count-price"><span class="count-price_span"><%=item.get('price')%></span></div>
</div>

мне нужно сохранять измененное количество. То есть при обновлении количество сново 1 становиться. Вот как передать аяксом количество, что-бы при обновлении не менялось ничего.
$.ajax({
	type: 'POST',
	url: '/cart/',
	cache: false,
	сomplete: function() {		$("#res").find('input[value="count"]').val('count');
	}
});
вот так не работает.

★★

Последнее исправление: gssomi (всего исправлений: 1)

А откуда серверная часть корзины узнает, что ты что-то добавила в корзину? Неудивительно совершенно, что при обновлении всё сбрасывается, ибо свои манипулянии ты производишь исключительно на клиенте.

r_asian ★☆☆
()
Ответ на: комментарий от r_asian

точно обработчик. хмм, то есть нужно что-бы ссылка была на обработчик и от туда вытягивается количества. А как это сделать?

gssomi ★★
() автор топика
Ответ на: комментарий от r_asian

нет, мне другой проект не дадут, и буду мучиться с битриксом до конца жизни. это хуже угроз

gssomi ★★
() автор топика
Ответ на: комментарий от r_asian

-_- уже бывало такое. не прокатило

gssomi ★★
() автор топика

вот так не работает.

А что там должно работать, если в обработчик /cart/ вы не отправляете никаких данных, а просто делаете POST-запрос? Если бы вы что-либо отправляли

var data = [{id : 1, count: 12}, {id: 2, count: 15}, ...];
jQuery.ajax({
    type: 'POST',
    data: JSON.stringify(data),
    url: '/cart/',
    ...
});
а на сервере, в обработчике, данные бы сохраняли, тогда да, можно было бы ждать что-нибудь после перезагрузки. А так... :)

znenyegvkby
()
Ответ на: комментарий от menangen

Ну тут кто-то до меня уговорил заказчика и собственно сделал корявыйсайт на битрикс, в котором нельзя ничего по документации найти. А мне дали теперь завершить, доработать и сделать все хотелки. А по докам ничего не подходит. Обращалась к битрикс программистам а они говорят, «не по апи, сама разбирайся или переписывай».

gssomi ★★
() автор топика
Ответ на: комментарий от VladimirMalyk

А почему кстати? У ТС ниодной строчки из битрикса. Он написал какую-то фигню в вакууме и ты по ней каким-то чудом сделал вывод о битрикс?

Suntechnic ★★★★★
()
Ответ на: комментарий от gssomi

Сделай отдельную страницу корзины. Поставь туда стандартный компонент. И посмотри как она работает. Что он шлет и куда.

Начнем с того почему ты шлеш запрос на '/cart/'? Это же у тебя страница корзины. Ты в запросе этом хочешь перегрузить всю страницу со всем остальным барахлом? Для чего это тебе? Потом вырезать оттуда html корзины и пихать в свою страницу? Потом будете говорить что битркс говно?

У компонента корзины есть интерфейс для ajax запросо. Он ждет от тебя новые количества по каждому айтему корзины в полях POST запроса QUANTITY_ИдЗаписи, кроме того параметры компонента и id сессии. В ответ он вернет тебе JSON с данными, где у тебя все будет. Что-то вроде такого: http://joxi.ru/KAgJ7N6ugeRy42 Проверь на штатной корзине короче. JS там говно, но в целом понятен - разберешься.

Suntechnic ★★★★★
()
Ответ на: комментарий от zink

Еще раз повторяю - у ТС ни одной строчки в посте из битрикса. Или ты мое сообщение не прочитал? Все что там есть написано или ТС или кем-то до него. Как из этого можно сделать что битрикс говно?

Смотри как я могу:

<div style="width: 980px; background-color: #FFF;margin: auto; position: absolute; bottom: 0; top: 0; left: 50%; margin-left: -490px; color: navy; box-shadow: 0 0 20px #190EF2;">
            
            <img src="/a_29cd941d.jpg" />
        </div>
Laravel говно! Ведь это со странички моей дочери на том же хостинге на котором год назад я пилил сайт на Laravel!

Suntechnic ★★★★★
()
Ответ на: комментарий от VladimirMalyk

Ну так то можно сказать о любых разработчиках на PHP. Хотя да, что есть, то есть. Но может тогда дело не в битрикс?

Suntechnic ★★★★★
()
Ответ на: комментарий от Suntechnic

Но может тогда дело не в битрикс?

На говнокоде чуть ли не половина высера PHP слита с битрикса, его там не понаслышке знают, что как-бэ намекает нам что м.б. дело и в нем тоже? :)

znenyegvkby
()
Ответ на: комментарий от znenyegvkby

Я видел. Но там не так много кода непосредственно из битрикс (хотя странно, потому что можно перлов напостить, да).

Suntechnic ★★★★★
()
Ответ на: комментарий от Suntechnic

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

gssomi ★★
() автор топика

не получается =(

gssomi ★★
() автор топика

более четче уяснить самому задачу - самый эффективный способ

привет инъекциям и CSRF-атакам, впрочем ничего удивительного, будет пища санитарам...

anonymous
()
Ответ на: комментарий от anonymous

Хочу что бы за меня сделали :)

gssomi ★★
() автор топика
Ответ на: комментарий от gssomi

И вообще не с помощью компонента?

Тогда тебе придется писать обработчик самой.

Смотри сюда для начала: http://dev.1c-bitrix.ru/api_help/sale/classes/csalebasket/

Тебе понадобятся GetList, Update и Delete. Все несколько громоздко, но что делать. Имей ввиду что ID записи это не ID товара. ID товара это PRODUCT_ID. Ну и вперед. Пусть твой обработчик принимает id записей которые нужно изменить и новое количество. Дальше получает их с помощью GetList и апдейтит или удаляет. Затем, можно не парится и снова получить состояние с помощью GetList, посчитать сумму в корзине упаковать в JSON и в ответ.

Ответ уже разберешь на фронте и сунишь нужные значения в нужные элементы DOM.

Suntechnic ★★★★★
()
Ответ на: комментарий от Suntechnic

О точно, спасибо. А то я не могу понять что вместо add2basket заюзать.

gssomi ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.