|
|
|
| Хочу сделать так, чтобы по нажатию на кнопку "В корзину", товар добавлялся в корзину, т.е. делалась запись в сессию, и при этом страница не перезагружалась. На сколько мне известно, то реализовать такое можно с помощью JS. Но в JS я вообще никак не разбираюсь. Может есть какой-нибудь простенький скрипт, с помощью которого можно реализовать данную задачу?
Кто занает, подскажите плиз. | |
|
|
|
|
|
|
|
для: tAleks
(04.08.2011 в 21:32)
| | Хочу написать маленькую поэмку на японском языке.
Но в японском языке я вообще никак не разбираюсь. Может есть какой-нить простенький способ писать стихи на японском, не зная языка?
Кто знает, подскажите плиз. | |
|
|
|
|
|
|
|
для: tAleks
(04.08.2011 в 21:32)
| | Можно, если вы готовы использовать jQuery для решения этой задачи. Недостатки этого решения несколько язвительно описаны выше, если перевести их на русский, то будет это будет звучать примерно так "либо нужно знать JavaScript (кода довольно много для одного ответа), либо cheops вам предложит готовое, компактное и понятное решение, которое утяжелит вашу страницу на 50Кб (столько весит jQuery)". | |
|
|
|
|
|
|
|
для: cheops
(04.08.2011 в 21:57)
| | jQuery это не JavaScript? | |
|
|
|
|
|
|
|
для: f111
(04.08.2011 в 22:20)
| | Это бибиотека JavaScript, с её помощью получаются компактные решения. Если tAlex подойдет решение на jQuery, оно может выглядеть так. Пусть имеется PHP-обработчик вида
<?php
error_reporting(E_ALL & ~E_NOTICE);
session_start();
// Регистрируем товар
if(is_array($_SESSION['arr']))
{
if(!in_array($_GET['id'], $_SESSION['arr'], true))
{
$_SESSION['arr'][] = $_GET['id'];
}
}
else $_SESSION['arr'][] = $_GET['id'];
// Выводим результат
echo "<pre>";
print_r($_SESSION);
echo "<pre>";
?>
|
К нему нужно обратиться без перезагрузки страницы, для этого подойдет следующий jQuery-код
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>В корзину</title>
<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript">
// Назначение обработчиков после загрузки
// документа
$(document).ready(function(){
// Назначение события onClick ссылкам
// с классом basket
$(".basket").click(function(){
// Формируем URL-запрос
var url = 'handler.php?id=' + $(this).attr('id');
url = encodeURI(url);
// Осуществляем AJAX-запрос
$("#id_basket_conent").load(url);
return false;
});
});
// Add .last class to certain lists
$(document).ready(function(){
$("ul.lst li:last, ul.press li:last").addClass("last");
});
</script>
</head>
<body>
<div><a href='#' class='basket' id='id3432'>В корзину</a></div>
<div><a href='#' class='basket' id='id1234'>В корзину</a></div>
<div id='id_basket_conent'></div>
</body>
</html>
| Демонстрационный код и так получается довольно объемный, на чистом JavaScript он будет еще больше. Не думаю, что кто-то возьмется, так как это потребует довольно много времени. В рамках форума проще и быстрее создать код на jQuery. Если у кого-то возникнет желание, его всегда можно преобразовать в нативный JavaScript. | |
|
|
|
|
|
|
|
для: tAleks
(04.08.2011 в 21:32)
| | Попробую ответить.
Например ссылка, которая добавляет в корзину:
<a href="#" onclick="to_cart(<? echo $id.",".$user_id; ?>)"><? echo $name; ?></a>
|
В этом же документе надо в head написать обработчик:
<script type="text/javascript" src="/jquery-1.6.1.min.js"></script>
<script type="text/javascript">
function to_cart(id, user_id) {
$.post('/in_cart.php',{id:id, user_id:user_id},function(data){ //передаем данные о товаре и пользователе в обработчик
$('#basket_quantity').html(data); //тут изменяем кол-во товаров в корзине на текущей странице
alert("Товар добавлен в корзину."); //выводим сообщение о том, что товар добавлен в корзину
});
}
</script>
|
.. и самое вкусное - обработчик in_cart.php:
$id = str_replace('"','',json_encode ($_POST['id'])); //получаем в обработчик номер товара
$user_id = str_replace('"','',json_encode ($_POST['user_id'])); //получаем в обработчик user_id
ну и заносим в базу данных например данные о товаре, положенном в коризну
|
в этом же обработчике заносим все в БД и не забываем написать в конце:
//выводим сообщение о количестве товаров в корзине
Примерно так. Сам недавно делал. | |
|
|
|