2013-10-13 76 views
1

我有一個下拉列表使用JavaScript(本來不是在頁面上)加載的頁面上,它的加載沒有問題,但然後我想更新數據庫表一旦選定的值下拉列表的變化,我使用這個腳本:更新數據庫的下拉列表更改事件

<select name = "categ" id="dropd1"><option> .... </option></select> 

<script> 
    $("#dropd1") 
    .change(function() { 
      var value = this.val(); 
      $.post('listener_updates.php', {categ: value});}); 
</script> 

的listener_update.php包含腳本用於更新數據庫:

<?php 
if($_POST && $_POST['categ']){ 
connectMaBase(); 
$sql ='UPDATE produit SET categorie = "'.$_POST['categ'].'" WHERE num_prod ='.$_SESSION['num_prod']; 
$req = mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
mysql_close(); 
} 
?> 
+0

你的選擇元素實際上是否有值=「」?你的問題到底是什麼?任何錯誤?預期的行爲是什麼? – puelo

+0

預期的行爲是更新數據庫,但不幸的是沒有任何反應,我嘗試添加警報(值);檢查但沒有警報框顯示! –

+0

@puelo:是的選項元素有價值我只是認爲它會太長,複製整個代碼,因爲下拉列表顯示完全 –

回答

1

你沒有問一個問題。

無論如何,this.val()可能會引發異常。

嘗試$(this).val()

UPDATE:

嘗試

$(document).on('change', '#dropd1', function(){ 
     var value = $(this).val(); 
     $.post('listener_updates.php', {categ: value});}); 
}); 

這將創建一個事件偵聽器動態地添加DOM元素。

+3

或只是'var value = this.value;' – Sergio

+0

不幸的是它不工作,我猜問題來自這樣的事實,即下拉列表最初不是在頁面上,而是在單擊元素時使用JavaScript加載 –

+0

嘗試$(document).on('change','#dropd1',function() {// code here}); – geevee