Обновление счетчика добавленных в желания товаров без перезагрузки страницы

голоса: 0

Есть интернет-магазин (стандартный юкозовский). В шапке сайта расположена иконка сердечка, возле которой я вывожу кол-во добавленных в желания товаров. 

Эту цифру я вытягиваю запросом со страницы /shop/wishlist

вот сам код и скрипт (все предельно просто):

<script type="text/javascript"> 
$('#wish_amount').load('/shop/wishlist .ne_cont'); 
</script>

сюда выводится цифра (кол-во добавленных в желания товаров): <span id="wish_amount"></span>

все нормально работает. НО. инфа обновляется только после перезагрузки страницы. Т.е. добавил товар в желания, цифра не меняется, перезагрузил страницу, обновилась и цифра. 

Вопрос, как сделать так, чтобы цифра менялась сразу после того, как нажал на кнопку добавления товара в желания? И соответственно после того, как товар удалил из желаний.

Закрыто с пометкой: Вопрос решен!
| Автор: | Категория: JavaScript
Закрыт | | Автор: Yuri_Geruk
<script>  
        function show()  
        {  
            $.ajax({  
                url: "/shop/wishlist",  
                cache: false,  
                success: function(d)
{$("#wish_amount").html($('.ne_cont',d).html());}
            });  
        }  
      
        $(document).ready(function(){  
            show();  
            setInterval('show()',1000);             
        });  
    </script>  
 
такой чудо-скрипт обновляет инфу прекрасно, но благополучно отправил меня в аут на, сколько там 3,5 часа... Менять таймер на большее число вроде, как и смысла нет, т.к. инфа будет обновляться с задержкой. Вопрос актуален. как? 

Ответов: 1

голоса: +2
 
Лучший ответ

Создайте свою функцию вишлист:

function my_wishlist(id) {
_uPostForm('',{type:'POST',url:'/shop/wishlisth',data:{'goods_id':id},success:function(){$('#wish_amount').load('/shop/wishlist .ne_cont'); }});
return false;
}

А в виде товаров стандартную кнопку замените на свою с onclick="my_wishlist($ID$);"

| Автор:
Выбор ответа лучшим | | Автор: Yuri_Geruk

к сожалению, что-то не выводит цифру вообще. Что-то я видимо туплю. В нижнюю часть сайта добавил ваш скрипт:

<script type="text/javascript"> 
function my_wishlist(obj) {
if(lock_buttons) return false; else lock_buttons = 1;
_uPostForm('',{type:'POST',url:'/shop/wishlist',data:{'goods_id':id},success:function(){$('#wish_amount').load('/shop/wishlist .ne_cont'); }});
return false;
}
</script>

в вид товара в каталоге пока просто обернул так:

<a href="javascript://" onclick="my_wishlist($ID$);">$2WISHLIST$</a>

bandjuk,

Отредактировал код выше. Там ошибка у меня была. Попробуйте теперь + $2WISHLIST$ выводит уже див с onclick. Поэтому пока просто попробуйте обычную ссылку <a href="javascript://" onclick="my_wishlist($ID$);">ссылка</a>

Александр Леонов,
да, так заработало. Но в самом начале цифра не выводится, нажал на добавить в желания, появляется цифра, далее нажимаешь по разным товарам добавление-удаление в желания все работает и считает замечательно. Обновляешь страницу и цифра исчезает. нажимаешь на добавление и цифра появляется опять, причем считает корректно. т.е. было добавлено 4 товара, нажал на добавить 5-й высвечивается цифра 5. Может подскажите как поправить, чтобы цифра выводилась все время и не пропадала после обновления.  Если вначале добавить мою старую запись:  $('#wish_amount').load('/shop/wishlist .ne_cont');   то, вроде бы как все нормально, но есть подозрения, что так делать неправильно ;)
bandjuk,

Этот код работает только для как раз добавить/удалить, а чтобы изначально показывалось, при первой загрузке страницы вы свой оставьте

<script type="text/javascript"> 
$('#wish_amount').load('/shop/wishlist .ne_cont'); 
</script>

Александр Леонов,
Отлично, спасибо за помощь!
...