Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Почему то не работает header('Location:index.php?page=cart'); (https://javascript.ru/forum/server/75764-pochemu-ne-rabotaet-header-%27location-index-php-page%3Dcart%27-%3B.html)

laimas 06.11.2018 11:05

Цитата:

Сообщение от Nexus
Все "ковыряние" в 2 строки вмещается

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

Цитата:

Сообщение от Nexus
Не понял о чем вы, можете написать номер комментария

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

Nexus 06.11.2018 11:18

Цитата:

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

Понял о чем вы.

Цитата:

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

Фактически да, так и будет, за исключением того, что адрес редиректа не будет жестко задан в js-коде.

laimas 06.11.2018 11:31

Цитата:

Сообщение от Nexus
адрес редиректа не будет жестко задан в js-коде

Это единственный плюс в данной ситуации. Но при большом минусе всей логики обмена с сервером - запрос на добавление -> обработка ответа, не несет вообще ничего полезного.

Zhenyaxxxx 06.11.2018 15:39

Еще раз со своей измучанной проблемой... переделал код 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...

Zhenyaxxxx 06.11.2018 15:56

Вообще удалил код js... и все равно зависаю в add_to cart

Nexus 06.11.2018 16:00

Цитата:

Сообщение от Zhenyaxxxx
window.location.href = url?page=cart;

Это не какое-то заклинание, а инструкция для браузера.
"window.location.href" говорит браузеру, что нужно открыть в этой вкладке страничку с другим адресом.
Вместо "url?page=cart" вы должны были написать адрес странички, на которую пользователя нужно перенаправить.
В итоге должно было получиться:
window.location.href='/index.php?page=cart';

laimas 06.11.2018 16:01

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

В общем-то если при асинхронном добавлении товара после него делается переход, то выбрасывайте Ajax из добавления товара, толку то от него при этом никакого. Вместо этого кнопки добавления товара, это копки submit одной формы, отправляемой методом POST, значениями которых должны быть ID товаров, а именами ключ ожидаемый на сервере. Атрибут action формы можно сделать равным адресу корзины, куда и требуется перейти, то есть это позволит исключить лишнее перенаправление, а скрипт принимающий товары сделать на этой странице подключаемый.

Zhenyaxxxx 06.11.2018 16:03

Я думаю проблема не 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'); 

}

Zhenyaxxxx 06.11.2018 16:08

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

после перехода по ссылке /add_to_cart&id=666 - не перенаправляет

laimas 06.11.2018 16:09

Цитата:

Сообщение от Zhenyaxxxx
Я думаю проблема не js

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

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


Часовой пояс GMT +3, время: 21:53.