Ir para conteúdo

POWERED BY:

Arquivado

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

gremio10

Erro em Ajax

Recommended Posts

Fala galera, seguinte, to com um problemão ....

 

meu ajax está sempre caindo em ERROR...

 

   <h4>Estado :</h4> 
   <select name="estado" id="estado"/>
   	<?php
		$sql		= "SELECT * FROM estados";
		$conn->query($sql);
		$all		= $conn->fetchAll();
		foreach($all as $reg){
	?>
       	<option value="<?php echo $reg->id ?>"><?php echo $reg->uf ?></option>
       <?php
		}
	?>
   </select>

   <select name="cidade" id="cidade"/>

   </select>

   <div id="load"></div>

<script>
$(document).ready(function(){

	$("#estado").change(function(){

		var params 		= $(this).serialize();
		alert(params);

		$.ajax({
				type: "POST",
				url: "cidade.php",
				data: params,
				beforeSend: function(){
					$("#load").html("Carregando...");
				},
				success: function(e){
					$("#load").html("Ok.");
					$("#cidade").html(e);
				},
				error: function(e){
					$("#cidade").html(e);
				}				
		})
		return false;
	});
});
</script>

 

e esse é o codigo do cidade.php

 

<?php

require("../class.conexao.php");
$conn		= new Conexao;

$id			= $_POST["estado"];

$sql		= "SELECT * FROM cidades WHERE estado = '{$id}'";
$conn->query($sql);

$html		= "";

if($conn->num() > 0){

	$html	.= "<option value='{$reg->id}'>{$reg->nome}</option>";

}else{

	$html	.= "<option value='0'>Não foi encontrado</option>";

}

echo $html;

?>

 

Obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce quer colocar os options no select?

 

tente assim ..

<script>
$(document).ready(function(){

               $("#estado").change(function(){

                       var params              = $(this).serialize();
                       alert(params);

                       $.ajax({
                                       type: "POST",
                                       url: "cidade.php",
                                       data: params,
                                       beforeSend: function(){
                                               $("#load").html("Carregando...");
                                       },
                                       success: function(e){
                                               $("#load").html("Ok.");
                                               $("select#cidade").html(e);
                                       },
                                       error: function(e){
                                               $("#cidade").html(e); // ???? você imprime o erro dentro select? 
                                       }                               
                       })
                       return false;
               });
});
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara .. eu não sei se tem como imprimir opção dentro do select não .. isso você teria que fazer com um response text .. imprimir as options

la na pagina cidade ...

 

tpws .

 

function xmlhttp()
{

       if (window.XMLHttpRequest)
       {
               return new XMLHttpRequest();
       }

       var versao = ['Microsoft.XMLHttp', 'Msxml2.XMLHttp', 'Msxml2.XMLHttp.6.0', 'Msxml2.XMLHttp.5.0', 'Msxml2.XMLHttp.4.0', 'Msxml2.XMLHttp.3.0','Msxml2.DOMdocument.3.0'];
       for (var i = 0; i < versao.length; i++)
       {
               try
               {
                       return new ActiveXObject(versao[i]);
               }
               catch(e)
               {
                       alert("Seu navegador não possui recursos para o uso do AJAX!");
               }
       }
       return null;
}
function teste(){
 ajax = xmlhttp();
  if (ajax)
  {
          ajax.open('get','pagina+parametros, true);
          ajax.onreadystatechange = conteudo;
          ajax.send(null);
  }
}
function conteudo()
{
       if (ajax.readyState==4)
       {
               if (ajax.status==200)
               {

                       document.getElementById('onde botar o conteudo').innerHTML = ajax.responseText;
               }
       }
}

ai você chama a função por evento onchange ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

feio e incorreto isso:

$("select#cidade").html(e);

veja, uma forma mais bonita:

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

tô com um pouco de preguiça, pra te dizer oque tem 'de errado', precisaria debugar o código inteiro.

 

primeiro ponto, fazer o .html() está completamente errado.

veja que no meu código, eu crio cada option (createElement), e jogo no outro select com append

 

 

fora isso, responda:

-> o arquivo cidades.php está no mesmo nivel do script que está rodando ? (o formulario)

 

-> troque:

$id                     = $_POST["estado"];

por $_GET, acesse diretamente:

localhost/cidades.php?estado=2 e veja oque aparece na tela. Erros php ? ou os <options>.

 

-> pra quê o return false no onchange ?

 

->

var params              = $(this).serialize();

não faz sentido.. você só precisa enviar o value do select

correto:

 var params = $( this ).val();

 

..

Compartilhar este post


Link para o post
Compartilhar em outros sites

algum erro seu ^_^

 

já usei esse 'meu código' diversas vezes, e outras pessoas também.

 

Aperte Ctrl + Shif + J no Firefox, veja o console de erros, e corrija.

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.