我写了一个网页,用户可以在其中输入存储在数据库中的日志条目,然后使用检索并打印在该页面上ajax。我还很陌生ajax,想知道是否有人可以向我解释return false;代码末尾的功能?甚至有必要吗?
ajax
return false;
如果我将第二个ajax代码放在该代码之后return false不起作用!你能告诉我为什么吗?
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评论
return false在回调中可以防止出现默认行为。例如,在某种情况submit下,它不提交表单。
submit
return false 也会停止冒泡,因此元素的父代将不知道事件的发生。
return false 相当于event.preventDefault()+event.stopPropagation()
event.preventDefault()
event.stopPropagation()
当然,该return xxx行之后存在的所有代码都不会执行。(与我所知道的所有编程语言一样)
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,触发了它的提交处理程序。
preventDefault()
现场演示
现在,如果表单提交者的处理程序将通过以下方式取消冒泡return false:
$('#theDiv').submit(function() { alert('DIV!'); }); $('#theForm').submit(function(event) { alert('FORM!'); return false; // Or: event.preventDefault(); event.stopPropagation(); });
div甚至都不知道有表单提交。
这是什么return false做的香草JavaScript事件
从DOM2处理程序(addEventListener)返回false 根本不执行任何操作(既不会阻止默认设置,也不会停止冒泡;从Microsoft DOM2-ish处理程序(attachEvent),它阻止默认设置,但不会冒泡;从DOM0处理程序(onclick="return ..."),它阻止默认设置(只要您在属性中包含return即可)但不冒泡;在jQuery事件处理程序中,这两者都可以实现,因为这是jQuery的细节和实时测试– TJ Crowder
addEventListener
attachEvent
onclick="return ..."