Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, tô com + um probleminha aki,rsr. Vejam só tô com uma rotina q funciona da seguinte maneira:
Tenho um <select> q permite q o usuário escolha uma categoria q está cadastrada no BD categoria, e tenho outro <select></select> que lista todas as informações relacionadas a categoria escolhida, tipo "ecolher um estado e listas todas as cidades".
Bem no Firefox ele tá funcionando bem, mas agora pela manhã comecei a testar no IE e percebi no ele para exatamente no retorno da informação, vou posta os código e se alguém puder dar uma olhada e ajudar, vamos lá.
resultado.php
// seleciona todas as categorias
<td width="25%"><select name="id_categoria" id="id_categoria" onchange="mostraExames();">
<option>Selecione uma categoria</option>
<?php
$sql=mysql_query("SELECT * FROM categoria ORDER BY descriscao_cat") or die ("Erro 2. ");
while ($linha=mysql_fetch_array($sql)){
$resultado4=$linha["codigo_cat"];
if ($id_categoria==$resultado4)
{$selecionado4 = "selected";}
else
{$selecionado4 = "";}
echo "<option value =\"$resultado4\" $selecionado4 > $linha[descriscao_cat] </option>";
}
?>
</select></td>
// mostas todos os exames relacionados a categoria escolhida
<tr>
<td align="right">Exames</td>
<td colspan="3"><select name="id_exames" id="id_exames">
<option>Selecione um Exame</option>
</select></td>
</tr>
instrucao.js
function mostraExames() {
//Seleciona a select das categorias para pegar seu valor
var categoria = document.getElementById( "id_categoria" );
//Faz um POST na página ajax.php mandando como parâmetro a categoria
xmlRequest.open("POST","ajax.php",false);
xmlRequest.setRequestHeader( "Content-type", "application/x-www-form-urlencoded" );
xmlRequest.send( "categoria="+categoria.value );
var dados = xmlRequest.responseText;
var json = eval('('+dados+')');
//Seleciona a select desejada
var select = document.getElementById( "id_exames" );
//Loop para alimentar a select
for( var i = 0; i < json.length; i++ ) {
//Cria um novo elemento option e alimenta o mesmo
var option = document.createElement("option");
option.value = json[i].codigo_exa;
option.text = json[i].descriscao_exa;
try {
//Adiciona na select (para browsers que suportam os padrões, ou seja, todos menos o IE)
select.add(option, null);
} catch(erro) { // [b]--> No IE ele para mesmo aki[/b]
//Adiciona na select caso seja o IE.
select.add(option);
}
}
}
ajax.php
<?php
//Faz a conexão com o banco
include ("conexao.php");
//Faz a consulta no banco
$categoria = $_POST["categoria"];
$consulta = mysql_query("SELECT codigo_exa, descriscao_exa FROM exames WHERE codigo_cat_exa ='$categoria' and tipo_lab_nlab ='DI' ORDER BY descriscao_exa");
//Cria um array para definir os dados
$array = array();
//Define o contador de linhas do array
$i = 0;
//Loop para alimentar o array
while( $dados = mysql_fetch_array($consulta) ) {
//Definindo os elementos do vetor
$array[$i]['codigo_exa'] = $dados['codigo_exa'];
$array[$i]['descriscao_exa'] = $dados['descriscao_exa'];
//Incrementa o contador
$i++;
}
//Transforma o array no padrão JSON e escreve para ser lido pelo Ajax
echo (json_encode($array));
?>
Ele atá chega a pegar os itens corretamente, mas para antes de preencher o <select>exames</select>, e mostra na tela o resultado da pesquisa, assim:
[{"codigo_exa":"43","descriscao_exa":"TESTE DE DIAGNOSTICO POR EXAMES"}].
Carregando comentários...