Problemas Com $_get No Firefox
#1
Posted 30/07/2008, 15:29
Pessoal eu estou com um probleminha estranho, eu tenho 2 combos onde o segundo depende do que vc escolher no primeiro, até aí tudo bem, o meu problema é na hora de pegar os valores deste combos, no Internet Explorer funciona legalzinho já no Firefox não pega, estou usando o método GET para passar os dados, no Internet Explorer aparece na URL todos os dados que eu preciso, já no FF falta os dados do segundo combo, carregado em ajax no formulário, mais eu já verifiquei os nomes dos campos e estão certinhos.
A minha dúvida é pq no IE funciona e no FF não? tem alguma configuração que eu deva fazer?
Me dêem um help aí galera, desde já agradeço a todos...
#3
Posted 30/07/2008, 16:56
formulário de busca:
<table border="0" cellspacing="1" cellpadding="1" class="main"> <form name="b_implementos" id="b_implementos" action="resultado_busca_implemento.php" method="get"> <tr> <td align="right">Implemento:</td> <td colspan="3"> <div id="implemento" style="margin-top:5px;"> <select class="select" id="implemento" name="implemento" onChange="pesquisar_implemento( this.value )"> <option value="">Selecione o implemento</option> <?php $consulta = mysql_query("SELECT * FROM tabela_implemento"); while($row = mysql_fetch_array($consulta) ){ echo "<option value=".$row['id'].">". $row['tipo_implemento']."</option>"; } ?> </select> </div> </td> </tr> <tr> <td align="right">Aplicação:</td> <td colspan="3"> <div id="aplicacao_busca"> <select class="select" id="aplicacao" name="aplicacao"> <option value=""></option> </select> </div> </td> </tr> <tr> <td align="right">Financiada:</td> <td colspan="3"> <select id="financiada" name="financiada"> <option value=""></option> <option value="Sim">Sim</option> <option value="Não">Não</option> </select> </td> </tr> <tr> <td align="right">Revisada:</td> <td colspan="3"> <select id="revisada" name="revisada"> <option value=""></option> <option value="Sim">Sim</option> <option value="Não">Não</option> </select> </td> </tr> <tr> <td align="right">Preço:</td> <td> <select id="preco" name="preco" class="b_preco"> <option value=""></option> <option value="0">0.000</option> <option value="5">5.000</option> <option value="10">10.000</option> <option value="15">15.000</option> <option value="20">20.000</option> <option value="25">25.000</option> <option value="30">30.000</option> <option value="40">40.000</option> <option value="50">50.000</option> <option value="60">60.000</option> <option value="70">70.000</option> <option value="80">80.000</option> <option value="90">90.000</option> <option value="100">100.000</option> <option value="250">250.000</option> <option value="500">500.000</option> <option value="100000">1.000.000</option> </select> </td> <td>até:</td> <td> <select id="preco_ate" name="preco_ate" class="b_preco"> <option value=""></option> <option value="0">0.000</option> <option value="5">5.000</option> <option value="10">10.000</option> <option value="15">15.000</option> <option value="20">20.000</option> <option value="25">25.000</option> <option value="30">30.000</option> <option value="40">40.000</option> <option value="50">50.000</option> <option value="60">60.000</option> <option value="70">70.000</option> <option value="80">80.000</option> <option value="90">90.000</option> <option value="100">100.000</option> <option value="250">250.000</option> <option value="500">500.000</option> <option value="100000">1.000.000</option> </select> </td> </tr> <tr> <td> </td> <td colspan="3" align="right"> <input type="submit" class="botao_b" value="Buscar" onClick="return validaBuscaImplemento();"> </td> </tr> </form> </table>
Função em ajax que seleciona a aplicação de acordo com o implemento
function pesquisar_implemento( valor ){ //alert(valor); xmlhttp.open("GET", "consultarimplemento.php?id=" + valor); xmlhttp.onreadystatechange= function() { if(xmlhttp.readyState != 4) { document.getElementById('aplicacao_busca').innerHTML = "Carregando..."; }else if (xmlhttp.readyState==4){ document.getElementById('aplicacao_busca').innerHTML=xmlhttp.responseText } } xmlhttp.send(null) }
Arquivo consultarimplemento.php
$id = $_GET["id"]; // pegamos o id passado pelo select $consulta = mysql_query("SELECT * FROM tab_sub_implementos WHERE id_implemento = $id"); echo "<select name='aplicacao' id='aplicacao' class='select'>"; while( $dados_modelo = mysql_fetch_array(($consulta))) { $modelo_id = $dados_modelo['id']; $modelo = utf8_encode($dados_modelo['nome']); echo "<option value='$modelo'>$modelo</option>"; } echo "</select>";
Arquivo resultado_busca_implemento.php
<? session_start(); ob_start(); //pego os dados selecionados no formulário de busca $implemento = addslashes($_GET['implemento']); $aplicacao = addslashes($_GET['aplicacao']); $financiada = addslashes($_GET['financiada']); $revisada = addslashes($_GET['revisada']); $preco_de = addslashes($_GET['preco']); $preco_ate = addslashes($_GET['preco_ate']); echo "$implemento<br>$aplicacao<br>$financiada<br>$revisada<br>$preco_de<br>$preco_ate"; ?>
Bom pessoal, basicamente esse é o meu código. não entendo pq no IE funciona e no FF não.
#4
Posted 30/07/2008, 19:08
[]s Até mais
#5
Posted 30/07/2008, 20:14
Meus códigos estão nesta lógica, tem um select no formulário que carrega o primeiro combo com os implementos, selecionando um implemento, com o evento onChange, ou seja, quando mudar, eu chamo a função javascript pesquisar_implemento( valor ) com a variável xmlhttp já pronta para fazer requisições ao servidor (isso é Ajax), agora na função pesquisar_implemento( valor ) você pode observar que tem a linha xmlhttp.open("GET", "consultarimplemento.php?id=" + valor); ela chama uma página php passando com o método GET o id do implemento que o kra selecionou no 1º combo. Daí vem o arquivo consultar_implemento.php que pega o id passado pela função pesquisar_implemento e faz um select para saber quais são as subcategorias do implemento que o kra selecionou e enviar a resposta de volta, ou seja, tudo que vc queira que seja exibido, no meu caso um select com as subcategorias do implemento selecionado.
Bom feito isso, nas linhas:
if (xmlhttp.readyState==4){ document.getElementById('aplicacao_busca').innerHTML=xmlhttp.responseText }diz que: Se status da requisição for igual a 4, ou seja, completo, a linha document.getElementById('aplicacao_busca').innerHTML=xmlhttp.responseText, vai jogar tudo que o arquivo consultarimplemento.php imprimiu, ou seja, o combo com as subcategorias do implemento que eu selecionei no 1º combo.
Imagina o seguinte:
Você tem um formulário de cadastro onde tem o campo Estado e Cidade.
1º) O kra seleciona o estado.
2º) O campo cidade tem que ser listado de acordo com o estado que vc selecionou.
3º) Você tem que cadastrar o cidadão.
O meu problema está na hora de cadastrar o infeliz, (claro que no meu caso é o implemento e as suas subcategorias, isso é só um exemplo). Bom mais na página aparece as cidades certinho, mais daí ele seleciona, clica em cadastrar, e a cidade não vem, vem só o estado, mais no IE dá certinho cadastra que é uma blz, já no FF dá erro.
Então, no meu caso o implemento vem certinho, agora a subcategoria não vem.
Bom espero não ter sido confuso e que todos possam ter entendido melhor...rsrs
Vlwsss.....
#6
Posted 30/07/2008, 20:26
[]s Até mais
#7
Posted 30/07/2008, 20:32
#8
Posted 30/07/2008, 21:08
$_GET
não funciona no Firefox" é sinal que o problema não é com o PHP. Onde está a definição do xmlhttp que perguntei?[]s Até mais
#9
Posted 30/07/2008, 21:16
Achei pinado na seção de Ajax isso pq nem programei em ajax heim estou só estudando =[
Primeiro de tudo você tem que inicar a requisição ao navegador. Para isso vamos inicar uma instância do objeto XMLHttpRequest. Mas como todo mundo tá careca de saber tem as diferenças de navegador. A família Safari, Mozilla usa de uma forma os os IElike usam de outra. Tá explicado o porque de:
var variavel; if (window.XMLHttpRequest) { variavel = new XMLHttpRequest(); } else if (window.ActiveXObject) { variavel = new ActiveXObject("Microsoft.XMLHTTP"); }
http://forum.wmonlin...howtopic=149419
Tava com saudade de dizer Use a Busca :x
Acredito q seja isso pq nem entendi bem qual o problema. Como falaram o problema não está no PHP está na diferença dos browsers'-'
Edição feita por: thiagorsl, 30/07/2008, 21:24.
#10
Posted 31/07/2008, 09:59
var xmlhttp; if(window.XMLHttpRequest){ xmlhttp = new XMLHttpRequest(); }else if(window.ActiveXObject){ xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); if(!xmlhttp){ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } }else { alert("Seu navegador não possui suporte a essa aplicação"); }
Acredito que o meu problema não seja com o Ajax, pq o combo lista certinho, ou seja os dados estão lá, eu só não estou conseguindo pegá-los na página resultado_busca_implemento.php.
#11
Posted 02/08/2008, 17:25
ou estou enganado???
Ex.:
[codebox]var xmlhttp;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else{ <<--ESSE ABRE
if(window.ActiveXObject){
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
if(!xmlhttp){
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}else {
alert("Seu navegador não possui suporte a essa aplicação");
}
} <<-- ESSE FECHA
[/codebox]
Bem... trabalho com um servidor proprio, e nele funcionou dessa maneira... no IE, FF e Opera...
boa sorte...
Talk is cheap. Show me the code
#12
Posted 02/08/2008, 18:17
Então, mais eu não abri as chaves depois do else onde vc colocou alí. Mesmo assim eu testei aqui para ver se resolvia meu problema e não mudou nada, tanto faz ter as chaves ou não.
Não consigo entender oq possa ser.... ainda não resolvi esse problema, e o pior é que eu tenho 4 tipos de busca na mesma página utilizando o mesmo script ajax (com funções diferentes claro) e funciona no FF e no IE...
Como diria o repórter Gil Gomes: "É um mistério, um mistério, coitado do Diego"...rsrs
Edição feita por: Diego Viana, 02/08/2008, 18:18.
#13
Posted 02/08/2008, 19:07
Ou eu tenha bebido muito para não ser isso... '-'
OBS: Não bebo '-' huahuauhauha
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."
Muito Obrigado à todos do fórum, e à toda equipe do fórum!
#14
Posted 03/08/2008, 23:35
// JavaScript Document var xmlhttp; if(window.XMLHttpRequest){ xmlhttp = new XMLHttpRequest(); } else if(window.ActiveXObject){ xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); if(!xmlhttp){ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } }else { alert("Seu navegador não possui suporte a essa aplicação"); } function pesquisar_implemento( valor ){ //alert(valor); xmlhttp.open("GET", "consultarimplemento.php?id=" + valor); xmlhttp.onreadystatechange= function() { if(xmlhttp.readyState != 4) { document.getElementById('aplicacao_busca').innerHTML = "Carregando..."; }else if (xmlhttp.readyState==4){ document.getElementById('aplicacao_busca').innerHTML=xmlhttp.responseText } } xmlhttp.send(null) }
Agora essa não é a única função que eu tenho utilizando dessa forma e funciona nos dois navegadores.
Agora sabe o que eu acho mais estranho, é que aparece certinho, carrega o combo com os dados, agora o que eu não consigo é pegar esses dados, mais eles estão lá, pq eu seleciono o que eu quero e tudo...
#15
Posted 04/08/2008, 16:30
a mesma coisa se repete na linha 22-24... e na linha 26 falta fechar com > ; <...
mas qnt ao funcionamento desse script... pra mim funciona numa boa em qlq browser.... boa sorte ai...
[codebox]
01 - // JavaScript Document
02 - var xmlhttp;
03 -
04 - if(window.XMLHttpRequest){
05 - xmlhttp = new XMLHttpRequest();
06 - } else
07 - if(window.ActiveXObject){
08 - xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
09 - if(!xmlhttp){
10 - xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
12 - }
13 - }else {
14 - alert("Seu navegador não possui suporte a essa aplicação");
15 - }
16 -
17 - function pesquisar_implemento( valor ){
18 - //alert(valor);
19 -
20 - xmlhttp.open("GET", "consultarimplemento.php?id=" + valor);
21 - xmlhttp.onreadystatechange= function() {
22 - if(xmlhttp.readyState != 4) {
23 - document.getElementById('aplicacao_busca').innerHTML = "Carregando...";
24 - }else
25 - if (xmlhttp.readyState==4){
26 - document.getElementById('aplicacao_busca').innerHTML=xmlhttp.responseText
27 - }
28 - }
29 - xmlhttp.send(null)
30 -
31 - }
[/codebox]
Talk is cheap. Show me the code
0 user(s) are reading this topic
0 membro(s), 0 visitante(s) e 0 membros anônimo(s)