Jump to content

Passar var por AJAX e retornar ao URL


Go to solution Solved by Knitter,

Recommended Posts

Posted

boas

estou aqui com uma questão que me está a dar volta à cabeça

necessito de pasar um var por ajax para um ficheiro php e depois nesse ficheiro php fazer com que volte com respostas para o ficheiro inicial

objectivo: validar uma palavra na base de dados e lançar uma resposta consoante o resultado

tenho assim o ficheiro inserir.php

   <label class="field select">
    <input  type="text" name="clientes" size="30" class="clientes gui-input" placeholder="Escreva o nome do cliente">
    </label>
  <div id="cliente"></div>
  <script>
  $(document).ready(function (){
	 $('input.clientes').typeahead({
		    name: 'clientes',
		    remote: 'cnt/clientes.php?query=%QUERY'
	    });

	    $(".clientes").focusout(function (){

		    var palavra = $(".clientes").val();
		    $.ajax({
			    url:"entrada.php?page=36&palavra="+palavra,
			    method:"POST"


		    });
		    return false;


	    })

  })
  </script>

e o ficheiro que ira receber a var assim

<div class="panel-body pn">
<?php
require_once ("../connect.php");connect();
$word = $_GET["palavra"];
$clientes = mysql_query("SELECT * FROM clientes where nome LIKE '%" . $word . "%'");
$conta = mysql_num_rows($clientes);
echo $word;
?>
<script>
   $(document).ready(function (){
   var conta = "<?php echo $conta ?>";
   console.log(conta);
	    if (conta == 0){
   $("#cliente").load("entrada.php?page=37");
	    };
	    })
</script>
</div>

ele esta a passar para esta página mas depois não retorna nada

obrigado

Posted

vamos com calma ...

sem qualqwuer tipo de referência a código (especialmente o teu, porque está conceptualmente errado) explica claramente o que pretendes fazer

o que pretendo fazer é escrever uma palavra num input e ele fazer o autocomplete com dados que vai buscar à bd ( isso está a funcionar)

o 2º ponto é verficar se essa palavra não existe, se não existe iria aparecer uma informação a informar o utilizador que o nome que escreveu não existe e se pretende criar o registo

e é isto ...parece simples assim escrito

obrigado

  • Solution
Posted

Ignorando os erros do código, uma falta óbvia é o método de tratamento de resposta ao pedido AJAX. Parece que estás a usar jQuery, e se assim for tens de implementar o tratamento da resposta no método .done(), opcionalmente tens também o .fail() para tratar respostas.

Pessoalmente, acho que devolver JSON é mais prático, em vez de devolver apenas uma string livre.

Pegando no teu código:

$(".clientes").focusout(function (){
   var palavra = $(".clientes").val();
   $.ajax({
    url: "entrada.php?page=36&palavra="+palavra,
    method: "POST"
   }).done(function(resultado) {
    //resultado contém o que é devolvido pelo PHP,
    //pode ser JSON
   };
   return false;
})
Posted

Ignorando os erros do código, uma falta óbvia é o método de tratamento de resposta ao pedido AJAX. Parece que estás a usar jQuery, e se assim for tens de implementar o tratamento da resposta no método .done(), opcionalmente tens também o .fail() para tratar respostas.

Pessoalmente, acho que devolver JSON é mais prático, em vez de devolver apenas uma string livre.

Pegando no teu código:

$(".clientes").focusout(function (){
var palavra = $(".clientes").val();
$.ajax({
 url: "entrada.php?page=36&palavra="+palavra,
 method: "POST"
}).done(function(resultado) {
 //resultado contém o que é devolvido pelo PHP,
 //pode ser JSON
};
return false;
})

não esta a retornar nada ...

Posted

Tens a certeza que não está a devolver nada? Confirmaste com ferramentas de debug, vendo o conteúdo do pedido e da resposta e os códigos de erro/sucesso?

"não está a retornar nada ..." não me diz muito 🙂

Posted

Tens a certeza que não está a devolver nada? Confirmaste com ferramentas de debug, vendo o conteúdo do pedido e da resposta e os códigos de erro/sucesso?

"não está a retornar nada ..." não me diz muito 🙂

pois nao diz mto :/

no php que lança a resposta esta assim

<?php
require_once ("../connect.php");connect();
$word = $_GET["palavra"];
$clientes = mysql_query("SELECT * FROM clientes where nome LIKE '%" . $word . "%'");
$conta = mysql_num_rows($clientes);
echo $conta;
?>

deveria aparecer o valor conta ...

Posted

deveria ?

como ?

porquê ?

qual a instrução de código que indica essa o valor deveria aparecer ?

e onde ?

o valor que me deveria passar era a quantidade existente da procura

ou seja se escrever joao deveria retornar 0 , pois não existe na base de dados nenhum joão

obrigado

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.