Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.06.2014, 20:08
Новичок на форуме
Отправить личное сообщение для MixMuz Посмотреть профиль Найти все сообщения от MixMuz
 
Регистрация: 25.06.2014
Сообщений: 4

Ajax работает через раз
Здравствуйте. Подскажите пожалуйста, только начинаю работать с Ajax, написал корзину, вся логика работает так как она должна работать, товары добавляются в корзину как надо, вот только не по кажжому клику, а через раз. С чем это может быть связано ?

Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 25.06.2014, 20:26
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от MixMuz
С чем это может быть связано ?
Где-то проблемы с логикой.
Ответить с цитированием
  #3 (permalink)  
Старый 25.06.2014, 20:58
Новичок на форуме
Отправить личное сообщение для MixMuz Посмотреть профиль Найти все сообщения от MixMuz
 
Регистрация: 25.06.2014
Сообщений: 4

вот скрипт
function add_to_cart(product_id){
	$.get("add_to_cart.php?product_id="+product_id, update_cart());
	$("#btn"+product_id).removeClass("addtocart");
	$("#btn"+product_id).addClass("incart");
	$("#btn"+product_id).attr("onclick",null);
}

это файл add_to_cart.php
<?php
session_start();

include "cart.php";
add_to_cart($_GET['product_id']);
?>


а это, файл cart.php
function add_to_cart($product_id, $count=1) {
	if (!empty($_SESSION['p_cart'][$product_id])) {
		$_SESSION['p_cart'][$product_id]['count']++;

	} else {
		$_SESSION['p_cart'][$product_id]['coast']=0;
		$_SESSION['p_cart'][$product_id]['count']=0;
		$q="SELECT prodprice FROM product WHERE prodid='$product_id' " ;
		$res = mysql_query($q)  or die( mysql_error() );
		$add_product=mysql_fetch_assoc($res);
		$_SESSION['p_cart'][$product_id]['coast']=$add_product['prodprice'];
		$_SESSION['p_cart'][$product_id]['count']=$count;
	}
	update_cart();
	
}


скрипт вызывается вот так
<a href="javascript:void(0)" id="btn867" class="addtocart">
             </a>


По моему я правильно сделал. Или же что то не так ?
Ответить с цитированием
  #4 (permalink)  
Старый 26.06.2014, 08:04
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Ну по моему логично проверить для начала в консоли, нет ли ошибок каких. Поставить console.log() в функцию addtocartи проверить на самом ли деле не срабатывает или ошибка?

И еще как ты привязываешь функцию к этой ссылке<a href="javascript:void(0)" id="btn867" class="addtocart">
</a>
и зачем там javascript:void(0) ???
Ответить с цитированием
  #5 (permalink)  
Старый 26.06.2014, 19:44
Новичок на форуме
Отправить личное сообщение для MixMuz Посмотреть профиль Найти все сообщения от MixMuz
 
Регистрация: 25.06.2014
Сообщений: 4

Цитата:
И еще как ты привязываешь функцию к этой ссылке<a href="javascript:void(0)" id="btn867" class="addtocart">
</a>
и зачем там javascript:void(0) ???
Извиняюсь, немного не дописал...
вот ссылка по которой функция вызывается
<a href="javascript:void(0)" onclick="add_to_cart(3510)" id="btn3510" class="addtocart"></a>


насчет href="javascript:void(0)" намек понял)) переписал вот так
<span onclick="add_to_cart(2735)" id="btn2735" class="addtocart"></span>

в консоли все без ошибок.
еще одну функцию забыл,
function update_cart() {
	$.post( "update_cart.php", {}, on_success); 
	function on_success(data)
	{
		$('.smalcart span.scart').html(data);
	}
}

И соответственно файл update_cart.php
<?php
session_start();
echo '<strong>Товаров в корзине:</strong> '.$_SESSION['products_incart'].' шт.</br><strong> На сумму:</strong> '.$_SESSION['cart_coast'].' руб.'; 
?>


Все работает. Но иногда при нажатии (примерно каждый третий клик) на "добавить в корзину" изменение можно увидеть после обновления страницы, а не как должно быть, сразу.
Ответить с цитированием
  #6 (permalink)  
Старый 27.06.2014, 10:24
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

php код твой мне ничего не говорит. Расставь в каждой функции console.log() и смотри через консоль в каком порядке вызываются функции вызываются ли вообще, что происходит с html
Судя по тому что в корзину все добавляется но не изменяется вид (толлько после перезагрузки), значит не каждый раз вызывается функция update
Ответить с цитированием
  #7 (permalink)  
Старый 29.06.2014, 12:49
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,139

Сообщение от MixMuz
$.get("add_to_cart.php?product_id="+product_id, update_cart());
1. Читаем на википедии чем отличается POST запрос от GET запроса http://ru.wikipedia.org/wiki/HTTP#POST
2. Открываем отладчик в браузере и смотрим отправляются ли запросы на сервер или данные берутся из кеша (from cache)

Последний раз редактировалось MallSerg, 01.07.2014 в 22:14.
Ответить с цитированием
  #8 (permalink)  
Старый 04.07.2014, 03:31
Новичок на форуме
Отправить личное сообщение для MixMuz Посмотреть профиль Найти все сообщения от MixMuz
 
Регистрация: 25.06.2014
Сообщений: 4

Может у меня такой случай:
например
$.post('url_файла_где_выполняется_function1()',{id:value},function2());

Может ли function2() выполняться раньше чем function1() ??
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ajax не работает, но не выдаёт ошибок. xTODx jQuery 12 22.04.2014 20:40
Передача данных через Ajax (IE) byFahrenheit AJAX и COMET 5 01.03.2013 16:06
Передача HTML кода на сервер через Ajax KomaLex AJAX и COMET 2 06.12.2012 15:28
Передать параметры через HREF в AJAX izcian Общие вопросы Javascript 5 18.08.2012 20:04
Автоматическая работа script в подгруженном через AJAX div'e rost Javascript под браузер 4 06.07.2012 21:24