使用ajax将表单变量保存在change上

时间:2013-10-14 05:38:55

标签: php html ajax forms

我正在尝试使用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。

欢呼任何帮助。

1 个答案:

答案 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;
?>