O que “retorno falso” faz?

Eu escrevi uma página da Web onde um usuário pode inserir uma input de log que é armazenada em um database e depois recuperada e impressa na página usando ajax . Ainda sou novo em ajax e queria saber se alguém poderia explicar-me o que return false; fazer no final do meu código? e é mesmo necessário?

Se eu colocar o segundo código ajax após o return false o código não funciona! você pode por favor me explicar por quê?

 //handles submitting the form without reloading page $('#FormSubmit').submit(function(e) { //stores the input of today's data var log_entry = $("#LogEntry").val(); // prevent the form from submitting normally e.preventDefault(); $.ajax({ type: 'POST', url: 'behind_curtains.php', data: { logentry: log_entry }, success: function() { alert(log_entry); //clears textbox after submission $('#LogEntry').val(""); //presents successs text and then fades it out $("#entered-log-success").html("Your Entry has been entered."); $("#entered-log-success").show().fadeOut(3000); } }); //prints new log entries on page upon submittion $.ajax({ type: 'POST', url: '/wp-content/themes/childOfFanwood/traininglog_behind_curtains.php', data: { log_entries_loop: "true" }, success: function(data) { alert(data); $("#log-entry-container").html(""); $("#log-entry-container").html(data); } }); return false; });​ 

O que vou escrever aqui é verdade para events do jQuery ,
Para events de baunilha em javascript, leia @TJ Crowder comment na parte inferior da resposta


return false dentro de um callback impede o comportamento padrão. Por exemplo, em um evento de submit , ele não envia o formulário.

return false também pára de borbulhar, então os pais do elemento não sabem que o evento ocorreu.

return false equivale a event.preventDefault() + event.stopPropagation()

E, claro, todo o código que existe após a linha return xxx não será executado. (como acontece com todas as linguagens de programação que conheço)

Talvez você ache isso útil:
Pare de borbulhar no evento – aumenta o desempenho?


Uma demonstração “real” para explicar a diferença entre return false e event.preventDefault() :

Marcação:

 

JavaScript:

 $('#theDiv').submit(function() { alert('DIV!'); }); $('#theForm').submit(function(e) { alert('FORM!'); e.preventDefault(); });​ 

Agora … quando o usuário enviar o formulário, o primeiro manipulador é o formulário submit, que preventDefault() -> o formulário não será enviado, mas o evento é enviado para o div, acionando o seu manipulador de envio.

Demonstração ao vivo

Agora, se o manipulador do envio do formulário cancelar o borbulhamento com return false :

 $('#theDiv').submit(function() { alert('DIV!'); }); $('#theForm').submit(function(event) { alert('FORM!'); return false; // Or: event.preventDefault(); event.stopPropagation(); });​ 

O div nem sabia que havia uma submissão de formulário.

Demonstração ao vivo


O que faz o return false em events javascript de baunilha

return false de um manipulador DOM2 ( addEventListener ) não faz nada (nem evita o padrão nem para borbulhar; de um manipulador ish DOM2 da Microsoft ( attachEvent ), ele impede o padrão, mas não borbulha; de um manipulador DOM0 ( onclick="return ..." ), ele impede o padrão (desde que você inclua o retorno no atributo) mas não borbulhe; de ​​um manipulador de events jQuery, ele faz ambos, porque isso é uma coisa jQuery. Detalhes e testes ao vivo aqui – TJ Crowder

Qualquer código após a instrução de return em uma function nunca será executado. Ele pára a execução da function e faz com que esse valor de retorno da function seja passado ( false neste caso). Sua function é “enviar” retorno de chamada do evento. Se esse retorno de chamada retornar false , o formulário não será enviado de fato. Caso contrário, ele será enviado como faria sem o JavaScript.

Nesse caso, return false; impede a ação padrão (que é o envio do formulário).

Embora seja provavelmente melhor usar e.preventDefault();

por causa do ajax você não faz seu formulário para ser submetido da maneira normal. Portanto, você deve retornar false para evitar o comportamento padrão do formulário.