什么是“返回假”呢?

我写了一个网页,用户可以input存储在数据库中的日志条目,然后使用ajax检索并打印在页面上。 我对ajax还是比较ajax ,想知道有人能向我解释什么会return false; 在我的代码结束? 甚至有必要?

如果我把第二个Ajax代码return false后代码不起作用! 你能向我解释为什么?

 //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; });​ 

我在这里写的是jQuery事件
对于香草JavaScript事件阅读@TJ Crowder评论在答案的底部


在callback中return false将防止默认行为。 例如,在submit事件中,它不提交表单。

return false也停止冒泡,所以元素的父母将不知道发生的事件。

return false等同于event.preventDefault() + event.stopPropagation()

当然, return xxx行之后的所有代码都不会被执行。 (就像我知道的所有编程语言一样)

也许你觉得这有帮助:
停止事件冒泡 – 提高性能?


一个“真实”的演示来解释return falseevent.preventDefault()之间的区别:

标记:

 <div id="theDiv"> <form id="theForm" > <input type="submit" value="submit"/> </form> </div>​ 

JavaScript的:

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

现在…当用户提交表单时,第一个处理程序是表单提交,其中preventDefault() – >表单将不会被提交,但事件冒泡到div,触发它的提交处理程序。

现场演示

现在,如果表单提交的处理程序将取消冒泡return false

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

该div甚至不知道有一个表单提交。

现场演示


什么在香草JavaScript事件return false

从DOM2处理程序返回false( addEventListener )不做任何事情(既不阻止默认也不阻止冒泡;从Microsoft DOM2-ish处理程序( attachEvent ),它阻止默认但不鼓泡;从DOM0处理程序( onclick="return ..." ),它可以防止默认(只要你包括返回属性),但不冒泡;从一个jQuery事件处理程序,它会做,因为这是一个jQuery的东西。

return语句后的任何代码将永远不会被执行。 它停止函数的执行,并使该函数的返回值通过(在这种情况下为false )。 你的function是“提交”事件callback。 如果这个callback返回false ,表单将不会被提交。 否则,它会像没有JavaScript一样提交。

在这种情况下, return false; 阻止默认操作(表单提交)。

尽pipe使用e.preventDefault();可能会更好e.preventDefault();

由于ajax,你不能以正常的方式提交你的表单。 所以你必须返回false以防止表单的默认行为。