Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
Estou com um probleminha que não estou conseguindo resolver, estou fazendo um projeto com PHP e AJAX, em uma das paginas do projeto, tenho 3 requisições ajax, uma dessas requisições faz o envio de um form via PHP para o banco mysql, ate ai funciona tudo perfeitamente, o problema é que quando clico no button para enviar esses dados, a requisição de envio executa o mesmo numero de vezes de requisições da que tem na pagina e no banco obviamente grava essas repetições.
como resolvo isso.
abraço
segue exemplo
$(document).ajaxComplete(function(){
$(".button").click(function(){
var dados = $("#form").serialize();
$.ajax({
url: 'gravar.php',
data: dados,
type: 'POST',
dataType: 'json',
cache: false,
success: function(retorno){
alert('ok');
}
});
});
});Então Gabriel, uso o ajaxComplete pois o button vai aparecer depois de um retorno json do banco e somente será clicando depois que a execução do ajax terminar e o id form so existe um na pagina.
tentei dessa forma mais deu o mesmo problema.
abraço
Acho q entendi melhor o seu cenário.
Da uma lida broo
Esse eu ja testei também, continua na mesma.
Opa Gabriel agora funcionou, sempre usei o ajaxComplete() mais dessa vez ele me falhou rrss.
mudei o ajaxComplete() para ready() e usei o on() no click ai deu boa.
abraço
Fico feliz que deu certo.
Já apanhei muito também com esse lance de manipular o DOM após o mesmo ser carregado.
tava tem esse problema aqui em 2019. mas resolvido graças a dica do @gabrieldarezzo
>
Requisição de envio executa o mesmo numero de vezes de requisições da que tem na pagina e no banco obviamente grava essas repetições.
Não entendi isso aqui...
Outra duvida, por que utiliza esse evento?
$(document).ajaxComplete(function(){
Tenta assim:
Só precisa se atentar se o id='form' do html não está duplicado.
No seu code não tinha o $('#form '), "espaço + " isso garante que o serialize pegue só fields com name dentro daquele seletor.
Abraços.