Передать значение PHP в JS

305
11 февраля 2017, 09:38

Здравствуйте!

У меня имеется страница с каталогом товаром, где перед добавлением товара в корзину можно указать произвольное количество единиц товара, но максимальное количество товара, которое можно добавить, подгружается из базы данных с помощью PHP в max="":

<input type="text" value="1" min="1" max="<?=$product['nalichie']?>">

Далее посмотрите, пожалуйста, пример - здесь

Я же хочу сделать следующее:

Записывать максимальное число товара в переменную js, которое можно добавить в корзину:

<script type="text/javascript">var nalichie ='<?=$product['nalichie']?';</script>

Получается эта строчка js выводится у каждого товара, но со своим числом. То есть я передаю значение PHP в JS.

Сейчас у меня передаётся значение переменной всегда одно и то же, а не того товара на который кликнул прибавить +1 товар, например. Проверяю я это с помощью alert(nalichie);

Для чего я делаю такую проверку. Ведь по сути для поля input и так задаётся максимальное число, которое может ввести человек и проверяется это все с помощью js. Но стоит лишь в панели разработчика поменять максимальное число на произвольное своё, js будет принимать новое значение из max="...", а так не хотелось бы.

Думаю данное решение пригодится многим. Может посоветуете другой способ. Надеюсь на Вашу помощь:) Буду сердечно благодарен!

Answer 1

Исходя из небольшого обсуждения в комментариях пришли к варианту следующему: использовать ajax. Лично мне кажется, что это не оправдано. Ну да ладно.

  1. Подключить jQuery к html (подключается как js)
  2. Каждый товар в скрытом поле должен иметь свой идентификатор из БД. Желательно значение из индексируемого поля. Но проще всего будет добавить ИД_товара в value каждый кнопки (именно в вашем случае) - это будет в примере.
  3. При увеличении количества заказанных товаров хватаем ИД товара и отправляем на проверку php скрипту с помощью ajax.

jQuery(".КНОПКА").click(function(event) { // .КНОПКА - класс кнопок, нажатие на которые отслеживаем 
    id=$(this).val(); //берём value кнопки. Там мы храним ИД товара 
    aj("handler.php", false, "html", {"id": id}, s_handler); //Обратите внимание на false (можно на true) - синхронно или асинхронно! 
}); 
 
function s_handler(result) { 
    //обрабатываем ответ 
} 
 
function aj(url, async, datatype, data, success) { 
    $.ajax({ 
        type: "POST", 
        url: url, 
        async: async, 
        //timeout: 20000, //Время ожидания выполнения запроса 20с. 
        dataType: datatype, 
        data: data, 
        success: success, 
        error: function(err){console.log(err);} 
    }); 
}

На стороне php делаем все проверки и высылаем какой-то ответ. Который принимает тот же ajax (функция s_handler) и что-то делает.

READ ALSO
JavaScript Двойное отрицание(!!) и побитовый оператор Тильда (~)

JavaScript Двойное отрицание(!!) и побитовый оператор Тильда (~)

Изучаю JavaScriptЗадачка из учебника: Напишите функцию checkSpam(str), которая возвращает true, если строка str содержит „html“ или „css“, а иначе false

596
Оптимизация Canvas

Оптимизация Canvas

Здравствуйте, начал изучать canvas ,но столкнулся с проблемой оптимизацииИскал инфу но так и не понял что именно нужно делать

367
JS. выдает предупреждение closure-compiler на document.onmousemove = null;

JS. выдает предупреждение closure-compiler на document.onmousemove = null;

Здравствуйте, почему closure-compiler бросает предупреждения (warning) если я отменяю события с помощью documentonmousemove = null; Значит я что-то делаю не по этикету?

286
Content Security Policy, mod_pagespeeds и unsafe-inline

Content Security Policy, mod_pagespeeds и unsafe-inline

Добрый день, сообщество! Пытаюсь внедрить CPS на сайтеНа сервере установлен mod_pagespeeds, который, к моему удивлению, генерит кучу eval на странице

380