什么是“返回假”呢?
我写了一个网页,用户可以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 false
和event.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以防止表单的默认行为。