2

我正在尝试$_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>";
?>

ajax连接:

<?php
    session_start();
    $_SESSION['box_']['value'] = $_POST["value"];
?>

最终目标是在值更改时保存输入值$_SESSION['box_']['qty_LINE']

如果我$_SESSION手动设置值,我可以让它显示,但不能通过 ajax。

为任何帮助而欢呼。

4

1 回答 1

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;
?>
于 2013-10-14T06:04:28.703 回答