我正在尝试使用ajax将表单数据保存到$_SESSION
变量中,但我似乎无法正确运行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
值,我可以让它显示,但不能通过ajax。
欢呼任何帮助。
答案 0 :(得分:2)
更好的做法是使用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;
?>