Problema com Javascript\jquery e ajax

rr_abt

Power Member
Boas

Tenho um conjunto de selectbox que têm de ser actualizadas em "cadeia", ou seja, a primeira contêm dados de um recordset e a seguinte deve ser actualizada com base no item seleccionado na anterior e assim sucessivamente, os dados das selectbox, excepto da primeira, vêm de outra página, uns excertos do código:

Código:
<script>
function selectbox1()
{
    var valor1 = $("#selectbox1").val();
    
    $.get("dados_sql.php?id="+valor1, function( data )
    {
        $("#selectbox2").html(data);
    } );
    
    selectbox2();
}


function selectbox2()
{
    var valor2 = $("#selectbox2").val();
    
    $.get("dados_sql.php?id2="+valor2, function( data )
    {
        $("#selectbox3").html(data);
    } );

    selectbox3();
}


function selectbox3()
{
    var valor3 = $("#selectbox3").val();
    
    $.get("dados_sql.php?id3="+valor2+"&id4="+valor3, function( data )
    {
        $("#selectbox4").html(data);
    } );
    
    selectbox4();
}

function selectbox4()
{
    var valor4 = $("#selectbox4").val();
    
    $.get("dados_sql.php?id5="+valor4, function( data )
    {
        $("#selectbox5").html(data);
    } );
}

$( document ).ready(function() { selectbox1(); });
</script>

Código:
<form id="form1" name="form1" method="get" action="">
    <p>
      <label for="selectbox1"></label>
      <select name="selectbox1" id="selectbox1" onchange="selectbox1();">
        <?php
do {  
?>
        <option value="<?php echo $row_dados['id']?>"><?php echo $row_dados['nome']?></option>
        <?php
} while ($row_dados = mysql_fetch_assoc($dados));
  $rows = mysql_num_rows($dados);
  if($rows > 0) {
      mysql_data_seek($dados, 0);
      $row_dados = mysql_fetch_assoc($dados);
  }
?>
      </select>
      <label for="selectbox2"></label>
      <select name="selectbox2" id="selectbox2" onchange="selectbox2();">
      
      </select>
      
      <label for="selectbox3"></label>
      <select name="selectbox3" id="selectbox3" onchange="selectbox3();">


      </select>


      <label for="selectbox4"></label>
      <select name="selectbox4" id="selectbox4" onchange="selectbox4();">


      </select>
      
      <label for="selectbox5"></label>


      <select name="selectbox5" id="selectbox5">
      
      </select>
    </p>
    <p>
      <input type="submit" name="bt_adicionar" id="bt_adicionar" value="Adicionar" />
    </p>
</form>

A função selectbox1() faz o que é suposto, quando é chamada preenche a #selectbox2 com dados, quando chega à função selectbox2() é enviado um null como parâmetro apesar da selectbox anterior ter lá dados, a resposta da página dados_sql.php é "<option value=""></option>" e bloqueia-me o resto do javascript >(

os onchange por alguma razão também não funcionam...

O que é que me está a falhar?

Obrigado desde já...
 
Viva,

A melhor forma seria fazeres tudo no jquery... em vez de utilizares o "onchange" no html...
O null é enviado porque o js está a considerar o primeiro load, e nesse não tinhas nenhum dado no #selectbox2...

Resumindo tens de ir criando as funções a medida que tens os dados...
Se fizeres tudo no jquery, apanhando quando é alterado... Fica muito intuitivo...
Se tiveres dificuldades diz que eu mando te um exemplo que devo ter para aqui ;)
 
Back
Topo