Регистрация
Вход через соцсети
Восстановление пароля

Как сделать добавление товаров в корзину через AJAX?

Как сделать добавление товаров в корзину через AJAX?

Раздел:  Модули и обновления
Тэги:  интернет-магазин, AJAX

Можно сделать так.

1. Скопировать в папку /netcat/modules/default/ файл /netcat/modules/netshop/post.php который отвечает за добавления товара в корзину. Таким образом при обновлении этот файл не затронется

2. Отредактировать его убрав лишний код, и добавив некоторый функционал специфичный для ajax-обработчика (пример рабочего файла приведен в конце, в нем пустые ответы скрипта, их нужно доработать самостоятельно, если нужно, например, обновлять блок корзины после добавления товара в корзину).

3. Написать ajax-запрос к этому файлу (для примера будет использоваться метод $.post из библиотеки jquery. )

Например:

а) подключить jquery (в префиксе списка объектов компонента "Магазин: Товары", или в макете)



б) в конец блока "Объект в списке" компонента "Магазин: Товары" добавить такой код:

\$(function(){
\$('#post_".$f_RowID."').click(function(){
\$.post('".$SUB_FOLDER.$HTTP_ROOT_PATH."modules/default/post.php', { 'cart_mode' : 'add', 'cart[".$classID."][".$f_RowID."]' : '1' },
function(data){
// здесь должна быть функция обработки результатов запроса, обновления блока корзины, и т.д.
}, 'json');
return false; });
});

Код можно переработать, чтобы он создавался один раз, например, в префиксе списка компонента "Магазин: Товары", а не для каждого товара


Пример файла post.php


error_reporting(E_ALL^E_NOTICE);

// в заголовке – нужная кодировка
header('Content-Type: text/html; charset=utf-8');

// проверяем все ли есть необходимое
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' && $_POST) {

$NETCAT_FOLDER = join( strstr(__FILE__, "/") ? "/" : "\\", array_slice( preg_split("/[\/\\\]+/", __FILE__), 0, -4 ) ).( strstr(__FILE__, "/") ? "/" : "\\" );
include_once ($NETCAT_FOLDER."vars.inc.php");
require_once ($INCLUDE_FOLDER."index.php");

$client_url = urldecode("http://".$HTTP_HOST.$REQUEST_URI);
$parsed_url = parse_url($client_url);
$current_catalogue = $nc_core->catalogue->get_by_host_name($parsed_url['host']);
$catalogue = $current_catalogue["Catalogue_ID"];
if (!$catalogue) $catalogue = 1; // first site


//LoadModuleEnv();
$MODULE_VARS = $nc_core->modules->get_module_vars();

// Process cart changes
if ($_POST["cart"])
{
$shop->CartPut($_POST["cart"], $_POST["cart_mode"]);

// посылаем json-ответ скрипта положительный
}
else{
// номер корзины не прислали, посылаем json-ответ ошибку
}
}
else{
// к скрипту пытались обратиться напрямую, или же не прислали никаких POST-параметров
}
?>

Описание проекта