Добавить переменную из сеанса в другой сеанс, используя ajax - PullRequest
0 голосов
/ 28 июня 2018

Я новичок в JavaScript и пытаюсь передать переменную сеанса из 'Name', в которой переменная уже назначена с помощью PHP, и передать ее в 'cartItem' после нажатия кнопки.

Насколько мне известно, текущий код сохраняет значение «Name» в элементе var, а затем запрашивает HTML на сервере для возврата и обновления переменной сеанса «cartItem» со значением, сохраненным в элементе var.

Кнопка и скрипт:

<button id='addToCart' onclick='addToCart'>Add to cart</button>
                        <script>
                            function addToCart(){
                                var item = sessionStorage.getItem('Name');
                                item = new XMLHttpRequest();
                                item.onreadystatechange = function(){
                                    if (this.readyState == 4 && this.status == 200){
                                        sessionStorage.setItem('cartItem', item);
                                    }          
                                }
                            }
                        </script>

Затем на моей панели навигации отображается cartItem с помощью функции, которая вызывается на всех страницах

                        <span class='item-info'>
                        <span>" . $_SESSION['cartItem'] . "</span>
                    </span>

Но это не показывает. Любой совет был бы очень принят.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Вы создали объект XMLHttpRequest, но не открыли URL-адрес или не отправили запрос.

Пример (не тестировался):

var name = sessionStorage.getItem('Name');
var item = new XMLHttpRequest();
item.open("GET", "http://www.example.com/endpoint/" + name);
item.send();

После этого объект «элемент» будет содержать такую ​​информацию, как тело ответа и код состояния HTTP.

0 голосов
/ 28 июня 2018

Если я правильно понимаю, вы используете объект sessionStorage для хранения значений переменных сеанса PHP в документе Javascript / HTML, правильно? Если это так, то поймите, что когда вы пытаетесь изменить значение, вы изменяете его только на стороне client , сторона сервера (или сторона PHP) остается неизменной).

Похоже, у вас есть правильная идея с XMLHttpRequest, но для того, чтобы выполнить то, что вам нужно, вам нужно создать PHP-скрипт, который будет выполнять функция Javascript. Вот небольшой макет:

<?php
//NOTE: this does not do any input sanatation

//name of this script is changeVal.php
$keyAr = ["Name","Price","Value","Other"];
if (in_array($_POST['key'],$keyAr) {
    $_SESSION[$_POST['key']] = $_POST['val'];   
}

Я намеренно использую массив таким образом, а не $ _ SESSION [$ _ POST ['key']] , чтобы потенциальный хакер не мог изменить значение ЛЮБОЙ переменной сеанса.

Как только у вас есть скрипт выше, вы можете сделать ajax-запрос к этому скрипту, где key - это имя изменяемой переменной, а val - это значение, чтобы изменить его. к.

ПРИМЕЧАНИЕ: это не выполняет никакой санации или защиты исходного материала. Это просто макет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...