Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Обновление корзины AJAX JSON


paulittop

Recommended Posts

Добрый день.

В ОС 2.02 пытаюсь использовать для обновления корзины cart.update():

'update': function(key, quantity) {
		$.ajax({
			url: 'index.php?route=checkout/cart/edit',
			type: 'post',
			data: 'key=' + key + '&quantity=' + (typeof(quantity) != 'undefined' ? quantity : 1),
			dataType: 'json',
			beforeSend: function() {
				$('#cart > button').button('loading');
			},
			complete: function() {
				$('#cart > button').button('reset');
			},			
			success: function(json) {
				// Need to set timeout otherwise it wont update the total
				setTimeout(function () {
					$('#cart > button').html('<span id="cart-total"><i class="fa fa-shopping-cart"></i> ' + json['total'] + '</span>');
				}, 100);

				if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {
					location = 'index.php?route=checkout/cart';
				} else {
					$('#cart > ul').load('index.php?route=common/cart/info ul li');
				}
			}
		});
	},

На запрос

key    "YToxOntzOjEwOiJwcm9kdWN0X2lkIjtpOjQyO30"
quantity    "4"

 

Получаю ответ:

 

<b>Warning</b>: Invalid argument supplied for foreach() in <b>/Users/MacBook/Sites/TEXNOSALES/catalog/controller/checkout/cart.php</b> on line <b>414</b><b>Warning</b>: Cannot modify header information - headers already sent by (output started at /Users/MacBook/Sites/TEXNOSALES/index.php:102) in <b>/Users/MacBook/Sites/TEXNOSALES/system/library/response.php</b> on line <b>12</b>

 

foreach:

        if (!empty($this->request->post['quantity'])) {
            foreach ($this->request->post['quantity'] as $key => $value) {
                $this->cart->update($key, $value);
            }

            unset($this->session->data['shipping_method']);
            unset($this->session->data['shipping_methods']);
            unset($this->session->data['payment_method']);
            unset($this->session->data['payment_methods']);
            unset($this->session->data['reward']);

            $this->response->redirect($this->url->link('checkout/cart'));
        }

и так с любой позицией.

html запрос работает, но хотелось бы разобраться с JSON.

 

Пробовал в свежей установке ОС 2.02 в дефолтной теме и то же самое.

 

Подскажите пожалуйста, что я делаю не так?

 

Благодарю.

Змінено користувачем paulittop
Надіслати
Поділитися на інших сайтах


Вы пытаетесь в foreach завернуть $this->request->post['quantity'], когда в нем нет массива.

Надіслати
Поділитися на інших сайтах

И как же ту правильно поступить?

 

Вроде бы дефолтная функция ОС, которая лежит в common.js и такая лажа.

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

Подскажите пожалуйста в чем тут загвоздка?

Как сделать так, что бы массив был?

Змінено користувачем paulittop
Надіслати
Поділитися на інших сайтах


Благодарю  ibond за подсказку.

В итоге заработало с помощью слегка переделанной функции edit() в cart.php:

 

    public function update() {
        $this->load->language('checkout/cart');

        $json = array();

        // Update
        if (!empty($this->request->post['quantity'])) {

            $this->cart->update($this->request->post['key'], $this->request->post['quantity']);
            unset($this->session->data['shipping_method']);
            unset($this->session->data['shipping_methods']);
            unset($this->session->data['payment_method']);
            unset($this->session->data['payment_methods']);
            unset($this->session->data['reward']);

        }
        $json['total'] = sprintf($this->currency->format($this->cart->getTotal()));
        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }

 

Буду рад увидеть комментарии по поводу этого решения.

 

Теперь меня интересует решение для того, что бы делать добавление и удаление продукта из корзины с помощью AJAX, так как корзина размещена в карточке товара.

Буду признателен за ваше содействие.

 

Благодарю.

Надіслати
Поділитися на інших сайтах


  • 7 months later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.