2013-05-08 35 views
0

我有點新的Ajax + PHP。 我有一個選擇輸入,根據其值填充另一個選擇。onchange函數不工作,因爲預期ajax

這是HTML:

<tr> 
    <td><label>Categoría: </label></td> 
    <td><select id="cmbCategorias" onchange="cmbTareas(document.getElementById('cmbCategorias').value);"> 
      <?php 
      require_once('dataaccess.php'); 
      $categorias = new legajos(); 
      $categorias->cmbCategorias(); 
      ?> 
    </td> 
    <td><label>Tarea: </label></td> 
    <td><div id="divTareas"></div></td> 
    </tr> 

這是我的javascript函數:

function cmbTareas(categoria_id) { 
    document.getElementById("loadingimage").style.display = "block"; 
    document.getElementById("divTareas").innerHTML = ""; 

    xmlhttp = new XMLHttpRequest(); 

    xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      document.getElementById("divTareas").innerHTML = xmlhttp.responseText; 
      document.getElementById("loadingimage").style.display = "none"; 
      } 
     } 
    xmlhttp.open("GET", "legajos_tareas.php?categoria_id="+categoria_id, true); 
    xmlhttp.send(); 
    } 

legajos_tareas.php

require_once('dataaccess.php'); 
    $categoria_id=$_GET['categoria_id']; 
    $tareas = new legajos(); 
    $tareas->cmbTareas($categoria_id); 

dataaccess.php

public function cmbTareas($categoria_id) { 
    $con = $this->conectarDB(); 
    $query = "CALL SPR_TAREAS(".$categoria_id.")"; 
    $result = $this->con->query($query); 

    echo '<select id="cmbTareas">'; 

    while ($row = $this->con->fetch($result)) { 
     echo '<option value="'.$row['ID'].'">'.$row['NOMBRE'].'</option>'; 
    } 
    echo '</select>'; 
    $this->con->close(); 
    } 

它第一次完美無缺。然後,如果我在選擇列表中選擇另一個項目,則什麼都不會發生我在Chrome中遇到這個錯誤:Uncaught TypeError:對象不是函數。 onchange

任何想法? 在此先感謝。

+0

你正在使用相同的名稱cmbTareas ...嘗試改變其中的一個名字 – Hackerman 2013-05-08 21:12:31

+0

謝謝你的工作 – leandronn 2013-05-09 18:39:58

回答

0

請更改cmbTareas JS函數名稱或從ajax調用返回的cmbTareas選擇標識。相同的名稱將導致衝突。這也解釋了爲什麼它只有第一次。

+0

謝謝你的工作 – leandronn 2013-05-09 18:41:11