Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2011, 00:23   #1
fioru
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 14
По умолчанию Нужен совет - PHP+Ajax

Доброго времени суток.
У меня возникла проблема. Занимаюсь разработкой интернет-магазина и делаю страницу общего прайса с "живым поиском". и по средствам ajax-технологий в один клик человек из этого поиска отправляет нужное количество товара в корзину. До того как я заметил проблемы с поиском на Opera скрипт работал отлично. В Опере поиск не работал из-за того что в ней некорректно передавалась кириллица. Но это мне удалось решить, но после я заметил что перестала работать функция отправки товара в корзину.

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

Если надо больше данных предоставлю.
Заранее спасибо
fioru вне форума Ответить с цитированием
Старый 24.08.2011, 00:35   #2
fioru
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 14
По умолчанию

Вообще странно ведет себя скрипт...
IE пишет что значения передаваемые в input - null, хотя они есть
А спустя пару минут если набрать другие слова поиска (обновить список) корзина вновь работает... хотя после сменив слова - опять ошибка
fioru вне форума Ответить с цитированием
Старый 24.08.2011, 02:34   #3
8oOoRPM
Форумчанин
 
Регистрация: 12.11.2010
Сообщений: 146
По умолчанию

плз кодик какой-то и логи консоли...
8oOoRPM вне форума Ответить с цитированием
Старый 24.08.2011, 02:42   #4
fioru
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 14
По умолчанию

Вот что дает IE
Цитата:
Сообщение: 'productid.value' - есть null или не является объектом
Строка: 45
Символ: 3
Код: 0
URI-код: http://00005.fioru.name/engine/mymod...-to-basket2.js
А вот что при этом находится на самом объекте что вызывает ошибку
Код:
<tr>
<td><a href="/uploads/shop/products/pic0005288_1.jpg" onclick="return hs.expand(this)" >
<img src="/templates/Default/images/image.gif" border="0" /></a></td>
<td><div id="slidingProduct4899"><a href="/product/4899" class="nameprice" style="text-decoration:none;">
Детский стульчик, AKS-9011</a></div></td>
<td><nobr>3556 руб.</nobr></td>
<td><nobr><form name="formaProduct4899" onsubmit="return false;"><input type="number" name="count" size="4">
<input type="hidden" name="productid" value="4899"><a href="#" onclick="addToBasketFor(formaProduct4899);return false;">
<img src="/templates/Default/images/carts.gif" border="0" /></a></form></nobr></td>
</tr>
Ругается что нет для него параметра productid, а на деле он есть
вот часть js куда поступает сигнал:
Код:
function addToBasketFor(obj) {
  var productId=obj.productid.value;
  var count=obj.count.value;
  for (var i = 1; i <= count; i++) {
    addToBasket(productId);
  }
}
fioru вне форума Ответить с цитированием
Старый 24.08.2011, 02:50   #5
fioru
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 14
По умолчанию

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

P.S. на сайт (шаблон, тематика, товары) просьба не обращать внимание - наработки...
fioru вне форума Ответить с цитированием
Старый 24.08.2011, 03:13   #6
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

кодировка? ajax не переваривает кирилицу в windows-1251 в обычном виде

Последний раз редактировалось Lesha; 24.08.2011 в 03:15.
Lesha вне форума Ответить с цитированием
Старый 24.08.2011, 03:18   #7
fioru
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 14
По умолчанию

Говорить о кодировке можно было при "Живом поиске", поскольку там есть кириллические символы... проблем нигде не было, вот только для Оперы пришлось писать функцию для преобразования иероглифов в GET-запросе.

В той функции которая сейчас работает как ей вздумается - "добавление необходимого количества товара в корзину" передаются лишь 2 параметра: количество и ID товара - оба понятное дело числовые...
fioru вне форума Ответить с цитированием
Старый 24.08.2011, 07:30   #8
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

как то было нечто похожее - при "живом" поиске - идет переодическое обновление страници, так ведь? ТАк вот - при каждой такой перезагрузке нужно заново инициализировать функции ... иначе они перестают работать (так было в моем случае) ... ваш код не совсем понятен (в часности не видно что за функция addToBasket() ) ... и вообще - зачем все эти obj - не проще ли через document.getElementById ?
ADSoft вне форума Ответить с цитированием
Старый 24.08.2011, 09:30   #9
fioru
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 14
По умолчанию

Я любитель классической школы писания без каких-либо наворотов и чтобы работало точно и навсегда.
Но отказываться идти в ногу со временем это бред.
Поэтому частенько приходится экспериментировать. Как иначе представить я не знаю.

Вот он мой файл JS отвечающий за корзину:
http://00005.fioru.name/engine/mymod...-to-basket2.js

Изначально он был лишь для того чтобы передавать в самой ссылке лишь одну переменную. Я пытался переписать код на 2 переменные (чтобы на файл addProduct.php отослать 2 показателя), но 2ая постоянно терялась и выходил null, поэтому решил объектом и написать функцию-цикл. Теперь при клике на корзину не 1 раз кладется товар в корзину а столько сколько указано. Если кто сможет написать как передать 2 параметра - буду очень благодарен. Но у меня самым "на прямую" способом не получилось.

Вот как раньше было:
<a href="#" onclick="addToBasket(4899);return false;"><img src="/templates/Default/images/carts.gif" border="0"></a>

Вот как сделал:
<a href="#" onclick="addToBasketFor(formaProduct4899);return false;">
<img src="/templates/Default/images/carts.gif" border="0" /></a>

И вот если дело в живом поиске (кстати сделал его работающим лишь по вводу символов) то почему ошибка затрагивает лишь определенные товары
fioru вне форума Ответить с цитированием
Старый 24.08.2011, 13:21   #10
8oOoRPM
Форумчанин
 
Регистрация: 12.11.2010
Сообщений: 146
По умолчанию

имхо - getElementById... и проблемы отпадут скорее
8oOoRPM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен прогер Ajax ajhones Фриланс 3 19.04.2011 22:28
Нужен чат на php + ajax. Abuhamed Фриланс 3 24.01.2011 22:11
Нужен совет, просто совет kardinal94 Общие вопросы Delphi 7 16.12.2010 22:16
Нужен компаньон-программист PHP, MySQL, Ajax AladdinPS Свободное общение 0 03.10.2008 18:07