Ir para conteúdo

POWERED BY:

Arquivado

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

DinhOZinhO

[Resolvido] json não retorna dados do vetor

Recommended Posts

Sinceramente, não sei o que está errado.

 

Meu js

jQuery(function(){
	jQuery('#clienteSelecionado').change(function() {
		jQuery.ajax({
			type: 'GET',
			url: '<?=$url->to_pega_vencimento();?>',
			data: {
			    clienteSelecionado: $(this).val(),
			    _token: '<?=REQUEST_TOKEN;?>',
			    _method:'get',
			},
			beforeSend: function(){
			$(dataVencimento).val('Carregando...'); 
			},
			success: function(texto){
				$(dataVencimento).val(texto.dia_vencimento); 
				//$('#dataVencimento').val(texto.dia_vencimento);  
			   alert(texto.dia_vencimento);
			}
		});
	});
});

 

PHP

$dados = array('dia_vencimento'=>$sql[0]['empresa_dia_vencimento']);
echo json_encode($dados);

 

Sempre dá um alert com o valor undefined

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já debuguei e ele não retorna nada, já rodei console.log() alert(texto.dia_vencimento) utilizei o firebug pra ver o que está sendo retornado, e sempre retorna dados no formato: {"dia_vencimento":"15"}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Experimente colocar dataType: "json" no jQuery e header("Content-Type: application/json") no php

 

                        jQuery.ajax({
                               type: 'GET',
                               dataType: "json",
                               url: '<?=$url->to_pega_vencimento();?>',
                               data: {
                                   clienteSelecionado: $(this).val(),
                                   _token: '<?=REQUEST_TOKEN;?>',
                                   _method:'get',
                               },

Compartilhar este post


Link para o post
Compartilhar em outros sites

Zé Roberto, obrigado por tentar ajudar. Eu já havia colocado o dataType: "json" só não havia experimentado o header, de qualquer maneira o resultado foi o mesmo, quando eu coloco dataType, o processamento só chega até o método "beforeSend" não indo para o método listado abaixo, o "success"

 

success: function(texto){
$(dataVencimento).val(texto.dia_vencimento); 
alert(texto.dia_vencimento);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

mostre como fez.. e desculpe, pois esqueci de trocar o nome da variável..

 

parseJSON(data) :seta: parseJSON(texto)

 

correção

success: function(texto){

       if( obj = $.parseJSON(texto) )
       {
               alert(obj);
       }else{
               alert('parseJSON error');
       }

 

 

tente aí e poste como ficou a sua alteração.. se não fica complicado advinhar o que ou como está fazendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hinom, eu havia trocado a variável, vi q tava diferente e coloquei $.parseJSON(texto) e mesmo assim não foi, vou te mostrar como tá o code inteiro.

 

jQuery(function(){
	jQuery('#clienteSelecionado').change(function() {
		jQuery.ajax({
			type: 'GET',
			url: '<?=$url->to_pega_vencimento();?>',
			data: {
			    clienteSelecionado: $(this).val(),
			    _token: '<?=REQUEST_TOKEN;?>',
			    _method:'get',
			},
			beforeSend: function(){
			$(dataVencimento).val('Carregando...'); 
			},
			success: function(texto){

				if(obj = $.parseJSON(texto)){
               	alert(obj);
       			}else{
               	alert('parseJSON error');
               	}

               	// aqui seria para ele passar o valor para o input
				$(dataVencimento).val(texto.dia_vencimento); 
				//$('#dataVencimento').val(texto.dia_vencimento);  
			   alert(texto.dia_vencimento);
			}
		});
	});
});

 

Lembrando, que a resposta que o html trás é {"dia_vencimento":"15"} por exemplo

 

Alterei para

 

if(obj = jQuery.parseJSON(texto.dia_vencimento)){
               	alert(obj);
       			}else{
               	alert('parseJSON error');
               	}

 

e ele pula para o alert parseJSON error

Compartilhar este post


Link para o post
Compartilhar em outros sites

if(obj = jQuery.parseJSON(texto.dia_vencimento)){

isso não faz sentido.. por isso o erro.. :upset:

 

 

 

tente assim:

 

 

  parameters = 'clienteSelecionado=' + $(this).val() + '&_token=<?php echo REQUEST_TOKEN;?>&_method=get';
$.ajax({
  type: 'GET',
  url: '<?php echo $url -> to_pega_vencimento();?>',
  data: parameters,
         beforeSend: function(){
         $(dataVencimento).val('Carregando...'); 
         },
  success: function(data){
	//alert( data );
	if( obj = $.parseJSON(data) )
	{
		alert(obj);

	}else{
		alert( 'parseJSON error' );
	}

        // aqui seria para ele passar o valor para o input
        $(dataVencimento).val(obj.dia_vencimento); 
        //$('#dataVencimento').val(obj.dia_vencimento);  
        alert(obj.dia_vencimento);

  }
});

 

verificou se as variáveis PHP estão escrevendo corretamente ?

 

$url -> to_pega_vencimento() e REQUEST_TOKEN

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, coloquei exatamente como você colocou aí, e não foi.. não chega nem a executar o if dentro do sucess, para no beforeSend

 

As variáveis estão corretas do PHP, tanto é que ele chega a consultar e retornar no html o resultado {"dia_vencimento":"VALOR"}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Problema resolvido, o js estava correto, era no php que não estava certo, eu só fiz mudar a linha:

 

json_encode($dados);

 

para

 

die(json_encode($dados));

 

:wacko:

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.