|
Почему то не работает 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, время: 10:35. |
|