Что значит "вернуть ложь"; делать?

Я написал веб-страницу, где пользователь может ввести запись журнала, которая хранится в базе данных, а затем извлекается и печатается на странице с помощью ajax. Я все еще новичок в ajax и задавался вопросом, может ли кто-нибудь объяснить мне, что делает return false; в конце моего кода? и это даже необходимо?

Если я поместил второй код ajax после return false, код не работает! не могли бы вы объяснить мне, почему?

//handles submitting the form without reloading page 
$('#FormSubmit').submit(function(e) {
    //stores the input of today 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;
});
​

Ответ 1

То, что я напишу здесь, верно для событий jQuery,
Для ванильных событий javascript читайте @T.J. Комментарий Crowder в нижней части ответа


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

Теперь... когда пользователь отправляет форму, первым обработчиком является форма submit, которая preventDefault() → форма не будет отправлена, но событие пузырится в div, вызывая его отправителем.

Live DEMO

Теперь, если обработчик отправки формы отменит буксование с помощью return false:

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

Див даже не знал, что есть форма представления.

Live DEMO


Что делает return false в событиях javascript в ваниле

return false из обработчика DOM2 (addEventListener) ничего не делает (не предотвращает по умолчанию и не останавливает пузырьки; из обработчика Microsoft DOM2-ish (attachEvent) он предотвращает по умолчанию, но не пузырится, из DOM0 (onclick="return ..."), он предотвращает по умолчанию (при условии, что вы включаете возврат в атрибут), но не пузырясь, из обработчика события jQuery он выполняет оба действия, потому что это вещь jQuery. Подробности и живые тесты здесь - TJ Crowder

Ответ 2

Любой код после return оператора в функции никогда не будет выполнен. Он прекращает выполнение функции и возвращает значение возвращаемой функции (false в этом случае). Ваша функция - отправить запрос события. Если этот обратный вызов возвращает false, форма не будет отправлена ​​на самом деле. В противном случае он будет представлен, как и без JavaScript.

Ответ 3

В этом случае return false; предотвращает действие по умолчанию (которое является отправкой формы).

Хотя, вероятно, лучше использовать e.preventDefault();

Ответ 4

из-за ajax у вас нет вашей формы, которая будет отправлена ​​обычным способом. Поэтому вам нужно вернуть false, чтобы предотвратить поведение формы по умолчанию.

Ответ 5

Оператор return завершает выполнение функции. Это важно. Использование return приводит к короткому замыканию кода и прекращению его выполнения, предотвращая выполнение следующей строки кода