2013-10-14 42 views
2

我想通過ajax保存表單數據到$_SESSION變量,但我似乎無法正確運行onchange事件或發送變量。保存表單變量onchange與ajax

表格長度各不相同,所以我嘗試使用動態變量。

<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

jQuery中,使用'#'爲id映射和在PHP中獲得您的數組索引直。 – geomagas

+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; 
?> 
+0

只要我記得放入jQuery文件,你的回答就可以正常工作。 – JDC