Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Sou apenas curioso da programação mas "a coisa" vai andando!
Tenho este código e apesar de funcionar, parece-me que está errado.
(document).ready(function(){
$('#btEnviarAgre').click(function(){
var $dados = $('#frmAgregado').serialize();
$.ajax({
type: "POST",
url: "php/insAgregado.php",
data: $dados,
success: function (r) {
if(r==1) {
alert ("Dados inseridos correctamente!");
}else{
alert ("Dados não enviado!");
document.getElementById('#frmAgregado').reset();
}
}
});
return false;
});
});
Ao clicar o "btEnviarAgre" os dados são inseridos na tabela no entanto a mensagem "alert", informa-me que os dados não foram inseridos. Estará a ordem dos Alert's errada?
Por outro, após a mensagem de alert, queria resetar o formulário, acrescentei a linha a vermelho (document.getElementById('#frmAgregado.reset();) mas não tem qq efeito! Não é correcto?document.getElementById('frmAgregado').reset();
Como disse sou apenas um curioso da programação! Através do youtube e a informação existente, passo a passo vou avançando ...
Com este ficheiro Clear.js resolvi ....
$(document).ready(function(){
$('#btEnviarAgre').click(function(){
setTimeout('document.frmAgregado').reset();
});
});
... no entanto "irrita-me " porque a aplicação é composta por várias "tabs", Inicio, Cliente, Agregado,Processos, Descontos, Localizar e Gestão de Processos. A "tab" Localizar, por sua vez é composta por pelos "panes" Cliente, Agregado, Processos e Descontos. Quando envio os dados para a tabela mysql, e correm os módulos inserir.php e clear.js, a aplicação volta para a tab "Inicio". Isto é irritante, mas aceitável.
Mas porque é que, tal como disse na abertura do post, apesar dos dados serem lançados na tabela, a mensagem "alert" é, ... alert ("Dados não enviados!");>
9 horas atrás, AbaClar disse:
setTimeout('document.frmAgregado').reset();
Isso não funciona/não existe.
Veja com se faz com javascript:
var frmAgregado = document.getElementById('frmAgregado'); // Isso armazena o elemento DOM#ID em uma variável
setTimeout(function () { // função para iniciar um callback de contagem antes de executar seu escopo
frmAgregado.reset();
}, 1000); // 1 Segundo
>
9 horas atrás, AbaClar disse:
Mas porque é que, tal como disse na abertura do post, apesar dos dados serem lançados na tabela, a mensagem "alert" é, ... alert ("Dados não enviados!");
>
Em 22/07/2018 at 06:19, AbaClar disse:
if(r==1) {
alert ("Dados inseridos correctamente!");
}else{
alert ("Dados não enviado!");
document.getElementById('#frmAgregado').reset();
}
Aqui temos uma condição onde a variável **r** tem que ter o valor 1 para "dados inseridos...."
Então, em nenhum momento essa variável foi criada ou mesmo ele recebeu algum valor, assim sendo nunca terá o valor de 1.
Entendo que queira saber, a resposta se os dados foram inseridos/executados em um arquivo .PHP, pós AJAX.
Nesse termo é **IMPOSSÍVEL** detectar isso com jquery, uma vez que as funções do jquery serão executadas no cliente e não no servidor.
Mas existe uma forma disso acontecer? Sim há recursos para isso.
1 - Executar outro javascript dentro do arquivo que foi aberto pelo ajax. Aqui temos um problema pois temos que definir corretamente o tipo de requisição.
[https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests)
2 - Monitorar o status de comunicação cliente X servidor. Entretanto aqui temos um problema que sempre será retorno true quando o arquivo aberto for lido independente de ser executado ou não, como disse não dar para saber o que o servidor faz com javascript. Um exemplo de como esse monitoramento, você já deve ter visto em algum website uma barra de progresso que mostra o tempo para abrir um arquivo.
[https://developer.mozilla.org/pt-BR/docs/Web/API/XMLHttpRequest/Usando_XMLHttpRequest](https://developer.mozilla.org/pt-BR/docs/Web/API/XMLHttpRequest/Usando_XMLHttpRequest)
[https://developer.mozilla.org/pt-BR/docs/Web/API/ProgressEvent](https://developer.mozilla.org/pt-BR/docs/Web/API/ProgressEvent)
Como sugestão é: Não confunda javascript com jquery pois o mesmo é uma biblioteca que explora o javascriptOk resolvi. A mensagem agora está correcta ...
$(document).ready(function()
{
$('#btEnviar').click(function()
{
var $dados = $('#myForm').serialize();
$.ajax({
type: "POST",
url: "php/inserir.php",
data: $dados,
success: function() {
alert("Dados enviados com sucesso!");
$('#myForm').trigger('reset');
},
error: function() {
alert("Os dados não foram enviados!");
}
});
return false;
});
});
Tb entendi parte da explicação. Obrigado!
Para resetar o formulário você pode usar o trigger('reset'), exemplo: