|
Почему то не работает header('Location:index.php?page=cart');
Здравствуйте всем участникам форума... Редактировал сайт и ... "поломал". корзину сайта, после выбора товара должна идти переадресация на страницу cart.. но почему то не работает, остается на странице add_to_cart..посмотрите может увидете ошибку...
<script> $('document').ready(function(){ function addtoCart(itemId){ console.log("js-addToCart()"); $.ajax({ type: 'POST', async: false, url:"../send/"+itemId+'/', dataType: 'json', succes: function(data){ if(data['success']){ $('#cartCntItems') .html(data['cntItems']); $('#addCart_'+ itemId).hide(); $('#removeCart_'+ itemId).show(); } } }); } }); </script> session_start(); if(!isset($_SESSION['cart'])) { $_SESSION['cart'] = array(); $_SESSION['total_items'] = 0; $_SESSION['total_price'] = 0; } $page = empty($_GET['page']) ? 'index.php' : $_GET['page']; /* если страниц нет, то главная */ switch($page){ case('add_to_cart'): $id = $_GET['id']; $add_item = add_to_cart($id); $_SESSION['total_items'] = total_items($_SESSION['cart']); $_SESSION['total_price'] = total_price($_SESSION['cart']); header('Location:index.php?page=cart'); /*index.php&id='.$id*/ break; case('update_cart'): update_cart(); $_SESSION['total_items'] = total_items($_SESSION['cart']); $_SESSION['total_price'] = total_price($_SESSION['cart']); header('Location:index.php?page=cart'); break; } |
Попробуйте так:
header('Location: /index.php?page=cart'); Если не сработает - смотрите реальные заголовки ответа (в браузере F12 -> вкладка Network). |
$.ajax(
dataType: 'json' succes: function(data){ if(data['success']){ $('#cartCntItems') .html(data['cntItems']); ...... и какие в этом случае могут быть header('Location.... ? |
Вот, забыл показать функции по корзине и стандартный блок с товаром, который выводится из БД (внизу). До сих пор не получилось сделать переадресацию header('Location: /index.php?page=cart'); после нажатия на кнопку купить.... может мне лучше избавится от переключателя SWITCH и как то по другому переделать функции обработки корзины, чтобы функции обработки не зацикливалась на add_to_cart, как на странице.... Помогите советом...
<script> $('document').ready(function(){ function addtoCart(itemId){ console.log("js-addToCart()"); $.ajax({ type: 'POST', async: false, url:"../send/"+itemId+'/', dataType: 'json', succes: function(data){ if(data['success']){ $('#cartCntItems') .html(data['cntItems']); $('#addCart_'+ itemId).hide(); $('#removeCart_'+ itemId).show(); } } }); } }); </script> Функции корзины: session_start(); if(!isset($_SESSION['cart'])) { $_SESSION['cart'] = array(); $_SESSION['total_items'] = 0; $_SESSION['total_price'] = 0; } function add_to_cart($id){ $id = $_GET['id']; if(isset($_SESSION['cart'][$id])){ $_SESSION['cart'][$id]++; return true; } else{ $_SESSION['cart'][$id] = 1; return true; } return false; } function db_result_array($result){ $res_array = array(); $count = 0; while($row = mysql_fetch_array($result)){ $res_array[$count] = $row; $count++; } return $res_array; } function get_product($id){ $query = " SELECT * FROM `product` WHERE `id` = '$id'"; $result = mysql_query($query); $row = mysql_fetch_assoc($result); return $row; } function update_cart(){ foreach($_SESSION['cart'] as $id => $qty){ if($_POST[$id] == '0'){ unset($_SESSION['cart'][$id]); } else { $_SESSION['cart'][$id] = $_POST[$id]; } } } function total_items($cart){ $num_items = 0; if(is_array($cart)){ foreach($cart as $id => $qty){ $num_items = $num_items + $qty; } } return $num_items; } function total_price($cart){ $total_price = 0; if(is_array($cart)){ foreach($cart as $id => $qty){ $query = "SELECT cena FROM product WHERE id = '$id'"; $result = mysql_query($query); if($result){ $item_price = mysql_result($result, 0, 'cena'); $total_price = $total_price + $item_price * $qty; } } } return $total_price; } $page = empty($_GET['page']) ? 'index.php' : $_GET['page']; /* если страниц нет, то главная */ switch($page){ case('add_to_cart'): $id = $_GET['id']; $add_item = add_to_cart($id); $_SESSION['total_items'] = total_items($_SESSION['cart']); $_SESSION['total_price'] = total_price($_SESSION['cart']); header('Location:index.php?page=cart'); /*index.php&id='.$id*/ break; case('update_cart'): update_cart(); $_SESSION['total_items'] = total_items($_SESSION['cart']); $_SESSION['total_price'] = total_price($_SESSION['cart']); header('Location:index.php?page=cart'); break; } Из базы данных циклом выводятся товары с ценой и кнопкой "купить" <div > <p>Товар</p> <div id = 'price'><?php echo (int)$row['cena']. " грн. "; ?> </div> <a <?php if($row['price'] !=0){ ?> href="?page=add_to_cart&id=<?= $row['id'] ?>"; <?php } ?>id = "to_basket">Купить</a> </div> Вот страница сайта, для наглядного примера проблемы.... : https://ensy.com.ua/vents?page=vents |
Цитата:
Клиент должен делать перенаправление после ответа сервера на асинхронный запрос, при этом сервер может передать клиенту параметры запроса. |
подскажите как мне исправить этот асинхронный запрос, на JSON?
|
Цитата:
Вы можете пояснить связь представленного вами кода Ajax запроса с кодом РНР и вашей проблемой? Если этот Ajax запрос есть выбор товара (добавление в корзину), причем клиенту предписано принимать JSON, то сервер и должен отдавать только json. Ну ежику же понятно, что о перенаправлении на другую страницу при этом не может быть и речи. Перейти можно только клиентом, как window.location.href = url?page=cart. Но как тогда быть с $('#cartCntItems') .html(data['cntItems']); и т.д.? Вы либо что-то не договариваете, либо не можете описать проблему так, чтобы было понятна ее первопричина. |
Нечего мне недоговаривать.... Раньше все работало.... постепенно редактировал сайт.... и не заметил когда появилась эта проблема.... но скрипты корзины не трогал.... теперь пытаюсь исправить.... Что нужно показать еще чтоб понять что я такого "наворотил"..? Мне этот switch не нравится.... он добавляет мне страницы, которые нужно скрывать от индекса... Скажите где, какой код вытащить, я все покажу....
|
Цитата:
Или ... ? |
Когда нажимаю кнопку "Купить", происходит переход по ссылке add_to_cart&id=...переменная из товара... после этого оно переходит для управления в функцию корзины и в swith:
function add_to_cart($id){ $id = $_GET['id']; if(isset($_SESSION['cart'][$id])){ $_SESSION['cart'][$id]++; return true; } else{ $_SESSION['cart'][$id] = 1; return true; } return false; } switch($page){ case('add_to_cart'): $id = $_GET['id']; $add_item = add_to_cart($id); $_SESSION['total_items'] = total_items($_SESSION['cart']); $_SESSION['total_price'] = total_price($_SESSION['cart']); header('Location:index.php?page=cart'); break; } Я так думаю...... и наверное, после этого происходит $.ajax... |
Часовой пояс GMT +3, время: 06:05. |
|