06.11.2018, 11:05
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Nexus
|
Все "ковыряние" в 2 строки вмещается
|
Ну да, и все ради того чтобы потом все равно ручками написать "перейти ...."?
Сообщение от Nexus
|
Не понял о чем вы, можете написать номер комментария
|
Какие комментарии, обмен с клиентом объявляется в json, мало того что он как собаке пятая лапа (судя по коду), так еще и хочется только перехода, так к чему он?
|
|
06.11.2018, 11:18
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Сообщение от laimas
|
Какие комментарии, обмен с клиентом объявляется в json, мало того что он как собаке пятая лапа (судя по коду), так еще и хочется только перехода, так к чему он?
|
Понял о чем вы.
Сообщение от laimas
|
Ну да, и все ради того чтобы потом все равно ручками написать "перейти ...."?
|
Фактически да, так и будет, за исключением того, что адрес редиректа не будет жестко задан в js-коде.
|
|
06.11.2018, 11:31
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Nexus
|
адрес редиректа не будет жестко задан в js-коде
|
Это единственный плюс в данной ситуации. Но при большом минусе всей логики обмена с сервером - запрос на добавление -> обработка ответа, не несет вообще ничего полезного.
|
|
06.11.2018, 15:39
|
Кандидат Javascript-наук
|
|
Регистрация: 25.10.2018
Сообщений: 102
|
|
Еще раз со своей измучанной проблемой... переделал код js как вы сказали:
$('document').ready(function(){
function addtoCart(itemId){
console.log("js-addToCart()");
$.ajax({
type: 'POST',
async: false,
url:"../send/"+itemId+'/',
succes: function(data){
window.location.href = url?page=cart;
}
});
}
});
Все равно зависает на странице add_to_cart...
подскажите как переделать функцию php:
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
Чтоб удалить из кода SWITCH...
|
|
06.11.2018, 15:56
|
Кандидат Javascript-наук
|
|
Регистрация: 25.10.2018
Сообщений: 102
|
|
Вообще удалил код js... и все равно зависаю в add_to cart
|
|
06.11.2018, 16:00
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Сообщение от Zhenyaxxxx
|
window.location.href = url?page=cart;
|
Это не какое-то заклинание, а инструкция для браузера.
"window.location.href" говорит браузеру, что нужно открыть в этой вкладке страничку с другим адресом.
Вместо "url?page=cart" вы должны были написать адрес странички, на которую пользователя нужно перенаправить.
В итоге должно было получиться:
window.location.href='/index.php?page=cart';
|
|
06.11.2018, 16:01
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
А причем add_to_cart при переходе или "зависает" при добавлении товара? Вы в отладчик заглядывали или до сих пор нет, что отвечает сервер?
В общем-то если при асинхронном добавлении товара после него делается переход, то выбрасывайте Ajax из добавления товара, толку то от него при этом никакого. Вместо этого кнопки добавления товара, это копки submit одной формы, отправляемой методом POST, значениями которых должны быть ID товаров, а именами ключ ожидаемый на сервере. Атрибут action формы можно сделать равным адресу корзины, куда и требуется перейти, то есть это позволит исключить лишнее перенаправление, а скрипт принимающий товары сделать на этой странице подключаемый.
|
|
06.11.2018, 16:03
|
Кандидат Javascript-наук
|
|
Регистрация: 25.10.2018
Сообщений: 102
|
|
Я думаю проблема не js, а в switch....
подскажите как изменить функции по обработки корзины:
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;
}
Чтоб удалить из кода в этот swith:
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:/?page=cart');
break;
case('update_cart'):
update_cart();
$_SESSION['total_items'] = total_items($_SESSION['cart']);
$_SESSION['total_price'] = total_price($_SESSION['cart']);
header('Location:/?page=cart');
}
|
|
06.11.2018, 16:08
|
Кандидат Javascript-наук
|
|
Регистрация: 25.10.2018
Сообщений: 102
|
|
вот так переделал:
$('document').ready(function(){
function addtoCart(itemId){
window.location.href='/index.php?page=cart';
}
});
после перехода по ссылке /add_to_cart&id=666 - не перенаправляет
|
|
06.11.2018, 16:09
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Zhenyaxxxx
|
Я думаю проблема не js
|
Если вы воткнули в скрипт реально что я написал, а это просто пример, url?... то работать естественно не будет.
В switch на 80% одно и тоже, не нравится он, применяйте if...else, где для разного ключа страницы описать свои действия, общие после условия.
|
|
|
|