Перейти к содержанию
Форум поддержки пользователей VamShop

Баг бокса ajax-корзины!


Рекомендуемые сообщения

Добрый вечер!

Обнаружил ошибку в работе бокса Корзина при включенном ajax.

Ошибка в следующем: после операций стоваром (добавить\удалить) часть бока Корзина дублируется! Как исправить - не нашел. Нужна Ваша помощь. Пробовал в стандартном шаблоне - тоже самое!

Вот часть html-кода страницы до манипуляций с товаром:

<!-- Бокс корзина -->
<script type="text/javascript" src="jscript/jscript_ajax_cart.js"></script>
<div id="divShoppingCart">
<div id="boxCart">
...контент бокса...
</div>
</div>
<!-- /Бокс корзина -->[/code] Вот часть html-кода страницы [b]после манипуляций с товаром[/b]:
[code]
<!-- Бокс корзина -->
<script type="text/javascript" src="jscript/jscript_ajax_cart.js"></script>
<div id="divShoppingCart">

<!-- Бокс корзина -->
<script type="text/javascript" src="jscript/jscript_ajax_cart.js"></script>
<div id="divShoppingCart">
<div id="boxCart">
...контент бокса...
</div>
</div>
<!-- /Бокс корзина -->
</div>
<!-- /Бокс корзина -->

Ссылка на сообщение
Поделиться на другие сайты

А у Вас свой шаблон или стандартный vamshop?!

Баг проявляется как на своем шаблоне, так и на стандартном.

Ссылка на сообщение
Поделиться на другие сайты

Пробую вот здесь - http://demo.vamhost.ru

Нормально всё, ничего не двоится.

Или я не туда смотрю?

На http://demo.vamhost.ru я лично не могу включить аякс-корзину, т.к. настройки не сохраняются

А Вы можете включить, а я проверю?

Ссылка на сообщение
Поделиться на другие сайты

Не ту ссылку вставил, хотел написать http://vamshop.ru/vamshop.html

Проверьте там.

Тут работает... Что же за ерунда? На стандартном шаблоне у меня "тоже" двоится...

http://ik.gsi.kiev.ua/bumaga-maestro.html

Сейчас поставлю для теста стандартную демо-версию и попробую

Ссылка на сообщение
Поделиться на другие сайты

Попробуйте.

http://ik.vitrebenki.com/

"Свежая" "чистая" установка, версия 1.63 - ничего не трогал, импортировал десяток товаров. Глюк аякс-корзины наблюдается!

Нужно решение.

Ссылка на сообщение
Поделиться на другие сайты

FireFox и Chrome - двоится. В опере не знаю такого инструмента. Смотреть нужно не исходный код страницы, а код, сгенерированный ajax-ом. В FireFox - "Анализировать элемент". В Chrome - "Просмотр кода элемента".

В jscript_ajax_cart.js бокс на странице формируется

document.getElementById('divShoppingCart').innerHTML = ''+(reqAddCart.responseText||'')
а сам html бокса, т.е. тот самый reqAddCart.responseText выглядит так:
<!-- Бокс корзина -->
<script type="text/javascript" src="jscript/jscript_ajax_cart.js"></script>
<div id="divShoppingCart">
<div id="boxCart">
<b class="top"><b class="b1"></b><b class="b2"></b><b class="b3"></b><b class="b4"></b><b class="b5"></b></b>
<div class="boxheader">
<p>&nbsp;&raquo;&nbsp;<a href="{$LINK_CART}">{#heading_cart#}</a></p>
</div>
<div class="boxcontent">
...
</div>
<b class="bottom"><b class="b5b"></b><b class="b4b"></b><b class="b3b"></b><b class="b2b"></b><b class="b1b"></b></b>
</div>
</div>
<!-- /Бокс корзина -->[/code] Таким образом в divShoppingCart подставляется этот html. Получаем дублирование
[code]<!-- Бокс корзина -->
<script type="text/javascript" src="jscript/jscript_ajax_cart.js"></script>
<div id="divShoppingCart">

<!-- Бокс корзина -->
<script type="text/javascript" src="jscript/jscript_ajax_cart.js"></script>
<div id="divShoppingCart">
<div id="boxCart">
<b class="top"><b class="b1"></b><b class="b2"></b><b class="b3"></b><b class="b4"></b><b class="b5"></b></b>
<div class="boxheader">
<p>&nbsp;»&nbsp;<a href="http://ik.vitrebenki.com/shopping_cart.php">Корзина</a></p>
</div>
<div class="boxcontent">
...
</div>
<b class="bottom"><b class="b5b"></b><b class="b4b"></b><b class="b3b"></b><b class="b2b"></b><b class="b1b"></b></b>
</div>
</div>
<!-- /Бокс корзина -->

</div>
<!-- /Бокс корзина -->

Ссылка на сообщение
Поделиться на другие сайты

Да вот пытаюсь, но ajax корзину пока что не получается переделать на jQuery.

Может к следующей версии.

Ссылка на сообщение
Поделиться на другие сайты

БалбесЪ

Видимо, это ошибка.

Но как исправить сразу не скажу, к сожалению.

Только к следующей версии.

Ссылка на сообщение
Поделиться на другие сайты

БалбесЪ

Видимо, это ошибка.

Но как исправить сразу не скажу, к сожалению.

Только к следующей версии.

Решение нужно сейчас, т.к. нужно сдавать проект. Как мне объяснить заказчику, что движок, за который платятся деньги, с багом?

У меня из-за бага не работает корзина так, как должна.

Ссылка на сообщение
Поделиться на другие сайты

Cофта без багов не бывает. Ни платного, ни бесплатного.

Что именно в корзине не работает так, как должно?

Использую в корзине jscript для свертывания\развертывания корзинки. После добавления товара получаю два div-а с одинаковым идентификатором (#divShoppingCart)и скрипт больше не срабатывает.

Как вариант, конечно, можно попробовать создать еще один div внутри #divShoppingCart и привязать скрипт к нему. Буду пробовать утром. Даже в таком варианте нужно хотя бы использовать в корзине не <div id="divShoppingCart">, а <div class="divShoppingCart">, чтобы не получать два одинаковых id. Но тогда не будет срабатывать скрипт ajax, а значит нужно разбираться с кодом ajax, а значит тратить время. Хотелось бы чтобы это время тратил не я, а разработчик.

Ссылка на сообщение
Поделиться на другие сайты

Использую в корзине jscript для свертывания\развертывания корзинки. После добавления товара получаю два div-а с одинаковым идентификатором (#divShoppingCart)и скрипт больше не срабатывает.

Это точно, такой селект не сработает.

Хотелось бы чтобы это время тратил не я, а разработчик.

Я не разработчик этого скрипта, но подсказать могу. Из солидарности ;)

В ajax_shopping_cart.php замени

  echo $box_shopping_cart;
на
  if (($i = strpos($box_shopping_cart, '<div id="divShoppingCart">')) !== false) {
$box_shopping_cart = substr($box_shopping_cart, $i+26);
$i = strrpos($box_shopping_cart, '</div>');
$box_shopping_cart = substr($box_shopping_cart, 0, $i);
}
echo $box_shopping_cart;[/code]

Не проверял, но должно сработать.

Изменено пользователем ABerezin
Ссылка на сообщение
Поделиться на другие сайты

Не проверял, но должно сработать.

По логике должно работать, но не работает ajax - не "ложатся" товары в корзину. Направление верное - буду думать, спасибо!

ПС:

Работает вот так:

  $i = strpos($box_shopping_cart, '<div id="divShoppingCart">');
if ($i>0) {
$box_shopping_cart = substr($box_shopping_cart, $i+26);
$i = strrpos($box_shopping_cart, '</div>');
$box_shopping_cart = substr($box_shopping_cart, 0, $i);

}
echo $box_shopping_cart;[/code]

Спасибо!

Ссылка на сообщение
Поделиться на другие сайты

Скобки не хватало - исправил.

Это неправильная конструкция

if ($i>0) {

Она не сработает если $box_shopping_cart начинается с '<div id="divShoppingCart">'. Что вполне реально, т.к. зависит от шаблона.

Ссылка на сообщение
Поделиться на другие сайты

Скобки не хватало - исправил.

Это неправильная конструкция

if ($i>0) {
Она не сработает если $box_shopping_cart начинается с '<div id="divShoppingCart">'. Что вполне реально, т.к. зависит от шаблона.
Тогда вот так:
if ($i) ...{

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

Спасибо за идею!

Ссылка на сообщение
Поделиться на другие сайты

Тогда вот так:

if ($i) ...{
Тоже не правильно. На 0 не сработает. Тогда уж
if ($i !== false) ...{

Я и сам там не заметил, что скобки не хватает, а интерпритатор ошибки не выдал.

Он выдавал, но в аякс-е это не так просто. Нужно включать логгирование ошибок и смотреть в error_log.

Спасибо за идею!

Пожалуйста за код.

Ссылка на сообщение
Поделиться на другие сайты

Он выдавал, но в аякс-е это не так просто. Нужно включать логгирование ошибок и смотреть в error_log.

Пожалуйста за код.

Я в ajax не разбирался даже как оно работает - пока не пригождалось, хотя можно, наверное делать интересные вещи...

ПС: "Пожалуйста за код." И за код тоже спасибо, но тут идея главное! Код - то такое...

Ссылка на сообщение
Поделиться на другие сайты
  • 1 year later...

Баг остался, и в версии 1.70, и на http://demo.vamhost.ru, и на http://vamshop.ru/vamshop.html .

Решается описанным тут способом.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...