Ir para conteúdo

POWERED BY:

Arquivado

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

Akssio

buscando dados pelo ajax com o método $.post

Recommended Posts

Tenho uma página que possui várias requisições ajax usando o método $.post()..

acontece que as requisições falham na maioria das vezes(as vezes funciona)...não retornando os dados solicitados!..

 

$.post("insereproduto.php", {queryString: ""+$("#nomeProduto").val()+""}, function(data){
																				  
				if(data.length >0) {
				//acoes....
                                 }

algúem conseguiria explicar o inconstante sucesso da requisição??.o fato de ter várias requisições na página atrapalharia o desempenho e justificaria o problema??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Como está o server-side disso ?

 

se não está seguro com o método $.post, você pode usar o $.ajax que tem um tratamento de erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Como está o server-side disso ?

 

se não está seguro com o método $.post, você pode usar o $.ajax que tem um tratamento de erros.

 

 

o server-side está assim:

 

$pesq = $this->_request->getParam("queryString");

$produto= new Produto();
$prod = $produto->select()->from("produtos")->where("nome = ?",$pesq)->query()->fetchAll();

foreach($prod as $produ):
echo $produ["valor"];
endforeach;

os parametros do $.ajax são os mesmos?...como seria feito o tratamento de erro??

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal..

fiz uns testes aqui e constatei que se colocar o valor da variavel q vou passar para o php...diretamente na função $.ajax...funcionou beleza!!!..

exemplo:

 


$.ajax({url:"insereproduto.php", dataType:"html", type:"get", data: "q = algumValor", success: function(data){
																				  
				if(data.length >0) {
				dados = data.split("|");	
				$('#valor_produto').val(dados[1]);
				}
			},error: function(XMLHttpRequest, textStatus, 
                      errorThrown){
        window.alert(textStatus);
      }
    });

Veja que passei como dado a variavel "q" com um valor atribuido....e assim funcionou perfeitamente...

mas caso tente passar o valor referenciado...

 

valor = $("#nomeProduto").val();
$.ajax({url:"insereproduto.php", dataType:"html", type:"get", data: "q ="+valor, success: function(data){
																				  
				if(data.length >0) {
				dados = data.split("|");	
				$('#valor_produto').val(dados[1]);
				}
			},error: function(XMLHttpRequest, textStatus, 
                      errorThrown){
        window.alert(textStatus);
      }
    });

dessa forma não está funcionando!!.está retornando um erro de requisição!!..

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://api.jquery.com/category/ajax/

 

Como está o HTML? parece que não está pegando o valor correto então.

var valor = $("#nomeProduto").val();
alert( valor );
te retorna oque você quer?

 

Onde você disparou esse script ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://api.jquery.com/category/ajax/

 

Como está o HTML? parece que não está pegando o valor correto então.

var valor = $("#nomeProduto").val();
alert( valor );
te retorna oque você quer?

 

Onde você disparou esse script ?

 

 

a função completa está assim:

 

function fill_prod(thisValue) {
		$('#nomeProduto').val(thisValue);
		
					
		$.ajax({url:"insereproduto.php", dataType:"html", type:"get", data: "q="+thisValue, success: function(data){
																				  
				if(data.length >0) {
				dados = data.split("|");	
				$('#valor_produto').val(dados[1]);
								
				}
				
			},error: function(XMLHttpRequest, textStatus, 
                      errorThrown){
        window.alert(textStatus);
      }
    });
				
		
		
	}

eu estou chamando esta função no evento onBlur de uma input text...passando o seu próprio valor como argumento!..

fiz esse teste com alert...e está me mostrando exatamente o q espero!....mas não funciona qd coloco a variavel na função $.ajax

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá estranho isso cara... use sintaxe jQuery... não misture HTML e JS.. se jQuery te permite separar..

 

$(document).ready(function(){
   $('#nomeProduto').blur(function(){
       alert( $(this).val() );
   });
});
da forma que você fez, compensa mais usar JS puro, doque não se aproveitar do Framework.

 

E essas 2 linhas aqui:

function fill_prod(thisValue) {
                $('#nomeProduto').val(thisValue);
contrariam até a lógica...

se você recebe um parâmetro: thisValue pra que você seta o valor do campo de id nomeProduto com este mesmo valor ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

necessário ver o resto, o 'erro' pode estar em vários outros locais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok...fiz aquele teste do alert!...

e realmente não está sendo passado o valor correto do campo #nomeProduto..

é adicionado no início da String um caractere. desconhecido...(◘).

agora só não sei de onde ele saiu!..

 

o código completo está assim:

$(document).ready(function() {
$('#nomeProduto').blur(function(){
       
	   busca = $(this).val();
	   $.ajax({url"insereproduto.php", dataType:"html", type:"get", data: "q="+busca, success: function(data){
																				  
				if(data.length >0) {
				dados = data.split("|");	
				$('#valor_produto').val(dados[1]);
								
				}
				
			},error: function(XMLHttpRequest, textStatus, 
                      errorThrown){
        window.alert(textStatus);
      }
    });
	   	   
	   
   });



});

e o html:

<label>Produto:</label><input type="text" tabindex="12"  id="nomeProduto" name="nomeProduto" size="40" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, a indentação do teu código está horrível

 

Fiz um teste simples aqui:

<script type="text/javascript">
	$(document).ready(function() {
		$("#nomeProduto").blur(function(){
			var busca = $(this).val();
			
			$.ajax({
				url: "insereproduto.php", 
				dataType: "html", 
				type: "get", 
				data: "q="+busca, 
				success: function(data){
e o meu alert, retornou o valor correto.

 

Veja que você esqueceu dos : depois de url.

e essa ID é desnecessária, poderia ser trocada por:

$("input[name='nomeProduto']").blur(function(){

Compartilhar este post


Link para o post
Compartilhar em outros sites

rss..realmente tava meio bagunçado!..

e havia esquecido do : depois da url.....

 

só q o alert aqui não ta funcionando!...

tá retornando o valor...só q com um caractere a mais no inicio da String!..

teria alguma função JS.. equivalente a trim()..??..ou algo q limpe a String?

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.