Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 06.11.2018, 11:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nexus
Все "ковыряние" в 2 строки вмещается
Ну да, и все ради того чтобы потом все равно ручками написать "перейти ...."?

Сообщение от Nexus
Не понял о чем вы, можете написать номер комментария
Какие комментарии, обмен с клиентом объявляется в json, мало того что он как собаке пятая лапа (судя по коду), так еще и хочется только перехода, так к чему он?
Ответить с цитированием
  #22 (permalink)  
Старый 06.11.2018, 11:18
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от laimas
Какие комментарии, обмен с клиентом объявляется в json, мало того что он как собаке пятая лапа (судя по коду), так еще и хочется только перехода, так к чему он?
Понял о чем вы.

Сообщение от laimas
Ну да, и все ради того чтобы потом все равно ручками написать "перейти ...."?
Фактически да, так и будет, за исключением того, что адрес редиректа не будет жестко задан в js-коде.
Ответить с цитированием
  #23 (permalink)  
Старый 06.11.2018, 11:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nexus
адрес редиректа не будет жестко задан в js-коде
Это единственный плюс в данной ситуации. Но при большом минусе всей логики обмена с сервером - запрос на добавление -> обработка ответа, не несет вообще ничего полезного.
Ответить с цитированием
  #24 (permalink)  
Старый 06.11.2018, 15:39
Кандидат Javascript-наук
Отправить личное сообщение для Zhenyaxxxx Посмотреть профиль Найти все сообщения от Zhenyaxxxx
 
Регистрация: 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...
Ответить с цитированием
  #25 (permalink)  
Старый 06.11.2018, 15:56
Кандидат Javascript-наук
Отправить личное сообщение для Zhenyaxxxx Посмотреть профиль Найти все сообщения от Zhenyaxxxx
 
Регистрация: 25.10.2018
Сообщений: 102

Вообще удалил код js... и все равно зависаю в add_to cart
Ответить с цитированием
  #26 (permalink)  
Старый 06.11.2018, 16:00
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 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';
Ответить с цитированием
  #27 (permalink)  
Старый 06.11.2018, 16:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А причем add_to_cart при переходе или "зависает" при добавлении товара? Вы в отладчик заглядывали или до сих пор нет, что отвечает сервер?

В общем-то если при асинхронном добавлении товара после него делается переход, то выбрасывайте Ajax из добавления товара, толку то от него при этом никакого. Вместо этого кнопки добавления товара, это копки submit одной формы, отправляемой методом POST, значениями которых должны быть ID товаров, а именами ключ ожидаемый на сервере. Атрибут action формы можно сделать равным адресу корзины, куда и требуется перейти, то есть это позволит исключить лишнее перенаправление, а скрипт принимающий товары сделать на этой странице подключаемый.
Ответить с цитированием
  #28 (permalink)  
Старый 06.11.2018, 16:03
Кандидат Javascript-наук
Отправить личное сообщение для Zhenyaxxxx Посмотреть профиль Найти все сообщения от Zhenyaxxxx
 
Регистрация: 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'); 

}
Ответить с цитированием
  #29 (permalink)  
Старый 06.11.2018, 16:08
Кандидат Javascript-наук
Отправить личное сообщение для Zhenyaxxxx Посмотреть профиль Найти все сообщения от Zhenyaxxxx
 
Регистрация: 25.10.2018
Сообщений: 102

вот так переделал:
$('document').ready(function(){	
 function addtoCart(itemId){        
          window.location.href='/index.php?page=cart';
             } 
});

после перехода по ссылке /add_to_cart&id=666 - не перенаправляет
Ответить с цитированием
  #30 (permalink)  
Старый 06.11.2018, 16:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Zhenyaxxxx
Я думаю проблема не js
Если вы воткнули в скрипт реально что я написал, а это просто пример, url?... то работать естественно не будет.

В switch на 80% одно и тоже, не нравится он, применяйте if...else, где для разного ключа страницы описать свои действия, общие после условия.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему перебор элементов не работает по кругу Sinevik Общие вопросы Javascript 4 27.12.2017 01:41
Почему Jquery не работает в arcticmodal при вызове окна с большой высотой? sergey24 Общие вопросы Javascript 5 21.09.2017 15:49
Почему не работает? Rora Общие вопросы Javascript 7 10.05.2017 10:09
cookie почему не работает скрипт Alven Общие вопросы Javascript 1 01.09.2013 03:17
Почему это работает? (инклуд JS в JS) Василий Б. Общие вопросы Javascript 4 11.06.2010 12:41