Ir para conteúdo

POWERED BY:

Arquivado

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

iRCC

[Resolvido] Retorno do requisição.

Recommended Posts

Boa tarde, estou fazendo um sistema para empresa onde trabalho e resolvi utilizar ajax em uma parte de cadastro.

Já sistema funciona assim: voce entra em uma tela de cadastro de produto e lá tem um comboBox para selecionar para qual cliente o produto vai... só que existe a opção de cadastrar cliente na hora onde abre uma popUp de cadastro e la voce cadastra o cliente, o que eu fiz foi o seguinte: quando voce clica no OK da janela de cadastro ele envia uma requisição Ajax para recarregar o combo de cliente já com o cliente que voce acabou de cadastrar... ai que está o problema, quando o script executa sem alguma interrupção ele não tras os clientes e quando algo o interrompe, como um alert, ele executa.

var xmlhttp = false;

try{
  	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

}catch(e){
		try{
       	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}catch(e){
				xmlhttp = false;
		}

}
   if (!xmlhttp && typeof XMLHttpRequest != 'undefined'){
   		xmlhttp = new XMLHttpRequest();
   }
//funções ajax;
function buscaClientes(){

    	serverPage = "ajax.php?origem=5";
 			xmlhttp.open("POST",serverPage);


        campo = window.opener.document.getElementById("clientes");//combo para ser recarregado.
		  xmlhttp.onreadystatechange = function(){

  	if(xmlhttp.readyState == 4 && xmlhttp.status == 200 ){

		campo.options.length = 1;
		resposta = xmlhttp.responseText.split(','); //guarda o retorno da requisição.


    for( i = 0; i < resposta.length; i++ )
    {
      string = resposta[i].split( "|" );

     if(string[1] != null ){
    		valor = string[0];
				texto = string[1];

				 var NewOp = document.createElement('option');//crio o option
          NewOp.setAttribute('value',valor);
			    textoNode = document.createTextNode(texto);
			    NewOp.appendChild(textoNode);

          campo.add(NewOp,null);

      }
    }

	}

 }
  xmlhttp.send(null);


}
se eu coloco um alert nesta linha

if(xmlhttp.readyState == 4 && xmlhttp.status == 200 ){
alert("teste");
		campo.options.length = 1;
		resposta = xmlhttp.responseText.split(','); //guarda o retorno da requisição.

....
ele retorna os clientes... caso contrario não retorna....

 

 

alguem ai pode me dar uma Luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

xmlhttp.open("POST",serverPage);

Acredito que esteja aqui o problema...

 

 

Tente assim:

xmlhttp.open("POST",serverPage, true);

Compartilhar este post


Link para o post
Compartilhar em outros sites

nada cara.... continua não funcionando. Eu coloquei a chamada da funçã buscaClientes() no onclick do select e agora foi, mas não fico como eu queria, que é no <body onunload="buscaClientes()">.

Colocando o TRUE na linha que voce indicou não funcionou mas se eu volto a colocar o alert("teste") a funcção funciona. :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retira o xmlhttp.status == 200 e posta o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mantenha o true lá, é ele que garante que a página vai ser carregada assincronamente...

 

Tente assim:

 

if(xmlhttp.readyState == 4){
 if(xmlhttp.status == 200){
 //executa a função
 } else {
 alert("Página não encontrada");
 }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz como vcs falaram mas mesmo assim nd :/

 

if(xmlhttp.readyState == 4){
 if(xmlhttp.status == 200){
 //executa a função
 } else {
 alert("Página não encontrada");
 }
}

no codigo acima eu fiz e não deu o alert mas tambem não aconteceu nd.... dai coloquei o alert no else do primeiro if e deu o alert mas não trouxe nd tbm...

 

O que eu acho estranho é que se eu coloco a função pra ser executada no onclick do meu comboBox ele tras os resultado certinho.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

no codigo acima eu fiz e não deu o alert mas tambem não aconteceu nd.... dai coloquei o alert no else do primeiro if e deu o alert mas não trouxe nd tbm...

 

 

isso quer dizer q a readyState não chegou igual a 4,

readyState == 4 : sua solicitação recebeu uma resposta do servidor.

de uma olhada na sua solicitação e na resposta do servidor...

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu certo!

mudei a maneira como eu estava fazendo.... antes eu fazia em um arquivo separado e agora juntei tudo em um arquivo só e funcionou perfeitamente....

 

só ainda não descobri o porque que não funciona em um arquivo separado.

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.