Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Salve comunidade!
Tenho um script php responsável por gravar informações de um formulário.
Ele é chamado através do evento click do botão 'Salvar' usando AJAX.
Funciona com uma pequena exceção:
Em minha função php, que salva os dados do formulário tenho um **else**, com um echo 'false', o motivo disso é que caso nenhuma das condições funcione, preciso que o php retorne **false** e que o script com o AJAX receba esse valor, acionando um alert.
$("#salvar").click(function(){
$.ajax({
url: "http://meusite.com/acoes.php",
data: "?task=save",
dataType: 'json',
success: function(data){
if(data =='false'){
alert("Seu histórico está cheio!");
}
}
console.log(data);
});
});
Resumindo, o problema é o callback, como faço para receber uma resposta do PHP que o JQuery consiga interpretar e usar num if?
No php estou simplesmente usando:
echo 'false';
Tentei também:
echo json_encode('false');
Edgard, percebi que a função em success não estava funcionando, então, retirei dataType: 'json' e dei um alert para ver o que estava sendo recebido como data. Estava vindo todo o código fonte da página! Sabe o que pode estar causando isso?
poste o código de http://meusite.com/acoes.php
Esse é um exemplo que tenho usando json
success: function(json){ //Se ocorrer tudo certo
var msg = "Nome: " + json.nome + "\n";
msg += "Sobrenome: " + json.sobrenome + "\n";
msg += "Idade: " + json.idade;
//alert(msg);
$("#resultadoJson").empty();
$("#resultadoJson").append("<strong>"+msg+"</strong>");
}
O Código acima fiz desse link http://www.blogalizado.com.br/ajax-e-json-com-jquery-e-php/Então.. O código PHP está na mesma página na qual você faz a requisição pelo Ajax?
Se for, tente por o código no topo da página, e dê um exit(); no final do código PHP.
Por exemplo
<?php
if ($_GET['requisicao'] == 'req'){
//seu código
exit();
}
?>
<html>
e o jQuery fica:
$("#salvar").click(function(){
$.ajax({
url: "http://meusite.com/acoes.php?requisicao=req",
success: function(data){
if(data =='false'){
$("#div").html(data)
}
}
console.log(data);
});
});Edgard, pensei sobre o que você disse e resolvi deixar a parte do php separada.
A resposta do AJAX está chegando agora, embora ainda reste um problema: O valor recebido parece não ser reconhecido pelo JQuery.
O código ficou assim:
$("#salvar").click(function(){
$.ajax({
url: "http://meusite.com/acoes?task=save",
cache: false,
success: function(data){
alert(data);
}
});
});
Se tento um IF(data=='false'), o código para de rodar.Tente usar o $.post ou invés de $.ajax..
$("#salvar").click(function(){
$.post('http://meusite.com/acoes?task=save',{}, function(data){
if(data == true){
alert(data);
}
}
});
});Muito obrigado Edgard e Samuel, com a ajuda de vocês pude entender o problema e encontrar uma solução.
Pelo que entendi a função $.ajax() retornar a resposta do php em forma de string. Acontece que o comando php, também é interpretado e substituído por espaços em branco. Usando a função $.trim() do JQuery consegui eliminar esse espaços.
O código ficou assim:
$("#salvar").click(function(){
$.ajax({
url: "http://meusite.com/acoes",
data: '?task=save',
success: function(response){
if(response){
var status = $.trim(response);
if(status=='false'){
alert('Seu histórico está cheio!');
} else {
alert('Salvo com sucesso!');
}
}
}
});
});
Obrigado pessoal!
Boa, parabéns...
Precisa de pessoas assim como você aqui no fórum, que realmente quebra a cabeça pra resolver o problema. rs
A resposta vem como data...