Я пытаюсь сохранить данные формы в переменные $_SESSION
с помощью ajax, но я не могу нормально запустить событие onchange или отправить переменную.
Длина формы варьируется, поэтому я попытался использовать динамические переменные.
<script> function orderValues(boxValue){ $.post("/ajaxConnect.php",{value: $("qty_" + boxValue).val()}, function( result ) { console.log('value saved'); }); } </script> <php echo "<div id=\"prodBox\">QTY: <input name=\"qty_".rawurldecode($item->LINE)."\" value=\"" . $_SESSION['box_']['qty_'.rawurldecode($item->LINE)] . "\" type=\"number\" onchange=\"orderValues(this.value)\"/></div>"; ?>
ajaxConnect:
<?php session_start(); $_SESSION['box_']['value'] = $_POST["value"]; ?>
Конечная цель заключается в том, что входные значения сохраняются в $_SESSION['box_']['qty_LINE']
всякий раз, когда значение изменяется.
Если я $_SESSION
значение $_SESSION
вручную, я могу его показать, но не через ajax.
Приветствия за любую помощь.
Лучше использовать jquery для привязки событий вместо использования таких атрибутов, как onchange
, и вам также необходимо убедиться, что вы получаете правильные значения для отправки на ваш сервер, вам нужно как имя строки, так и значение.
Поэтому удалите атрибут onchange
:
<php echo "<div id=\"prodBox\">QTY: <input name=\"qty_".rawurldecode($item->LINE)."\" value=\"" . $_SESSION['box_']['qty_'.rawurldecode($item->LINE)] . "\" type=\"number\" /></div>"; ?>
И используйте этот код jquery:
$(document).ready(function(){ $('#prodBox input').change(function(){ $.post("/ajaxConnect.php",{line: this.name, value: this.value}, function( result ) { console.log('value saved'); }); }); });
Наконец, обновите файл ajaxConnect
:
<?php session_start(); $line = isset($_POST["line"]) ? $_POST["line"] : ''; $value = isset($_POST["value"]) ? $_POST["value"] : ''; $_SESSION['box_'][$line] = $value; ?>