Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcos Barbosa

A função funciona no FF mas não no IE

Recommended Posts

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"}].

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa man =]

 

da uma olhada la no forum de Javascript é bem comun acontecer este tipo de coisa ..o pessoal la ja deve te uma solucao e explicacao na manga Imagem Postada

 

valww

Compartilhar este post


Link para o post
Compartilhar em outros sites

as implementações de parser de jSON, são muito diferentes...

var json = eval('('+dados+')');
o problema provavelmente é nisso.

dá pra você procurar um parser de jSON, que seja crossbrowser..

 

aqui eu fiz o mesmo que você:

http://forum.imasters.com.br/index.php?/topic/365795-combos-dependentes-ajax-jquery/

 

aproveitando o parser do jQuery, funciona e muito bem, no ie, ff..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw, teria como alguém mover esse tópico p lá ?

 

É eu vi o tópico, ñ sei se é por causar do ajax, mas quando mudei utilizei essa função ele ñ faz faz a chamada p função, assim ñ lê os dados para o 2º combo e mais até o tinyMCE parou de funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.