Что значит «вернуть ложь»?

Я написал веб-страницу, где пользователь может ввести запись в журнале, которая хранится в базе данных, а затем извлекается и распечатывается на странице, используя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;
});
​
 user55784624 мая 2012 г., 01:21
останавливает поведение отправки формы по умолчанию
 gdoron24 мая 2012 г., 01:21
@ Дагон. Не только это.

Ответы на вопрос(5)

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

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

 gdoron24 мая 2012 г., 01:35
Смотри мое обновление, плюс демо-версии
 gdoron24 мая 2012 г., 01:31
Почему ты так думаешь
 gdoron24 мая 2012 г., 01:27
Вы правы, это предотвращает действие по умолчанию, но оно также останавливает пузыри.
 ahren24 мая 2012 г., 01:30
«В данном случае» - форма не будет пузыриться.
 ahren24 мая 2012 г., 01:33
Извините, похоже, я был не прав. Событие submit действительно всплывающее - кажется, что это было бы полезно только в самых редких случаях.

ие return вызывает короткое замыкание вашего кода и немедленное прекращение его выполнения, предотвращая выполнение следующей строки кода

олжны вернуть false, чтобы предотвратить поведение формы по умолчанию.

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

Решение Вопроса

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

return false внутри обратного вызова предотвращает поведение по умолчанию. Например, вsubmit событие, оно не отправляет форму.

return false также прекращает пузыриться, поэтому родители элемента не будут знать, что произошло событие.

return false эквивалентноevent.preventDefault() + event.stopPropagation()

И, конечно, весь код, который существует послеreturn xxx строка не будет выполнена. (как со всеми языками программирования, которые я знаю)

Может быть, вы найдете это полезным:
Прекращение всплытия событий - повышает производительность?

A "Реальный" демо, чтобы объяснить разницу междуreturn false а такжеevent.preventDefault():

Markup:

<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, вызывая обработчик отправки.

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 делать в ванильных событиях JavaScri

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

 hair raisin24 мая 2012 г., 01:27
+ 1 за ответ на актуальный вопрос, даже если запоздалая мысль
 gdoron24 мая 2012 г., 01:31
@ FrançoisWahl. Наоборот ...return false делаетe.preventDefault(); + e.stopPropagation(). так что если вы хотите их обоих, простоreturn false.
 Nope24 мая 2012 г., 01:30
Значит ли это, если у тебя естьe.preventDefault(); тебе не нужноreturn false; если они оба делают одно и то же?
 Jonathan S.24 мая 2012 г., 01:30
 VisioN24 мая 2012 г., 01:28
+ 1 Да, я собирался написать оstopPropagation но видел, что ты уже упоминал об этом

Ваш ответ на вопрос