Почему возвращение true после вызова $ .post () не работает? - PullRequest
0 голосов
/ 29 июля 2010

У меня есть функция, которая возвращает другую функцию, которая возвращает логическое значение, при этом я делаю проверку, которая вызывает необычное поведение.

Код в функции выглядит следующим образом:

$.post( "classes/InsertCustomer.php", 
  { iResult: theResult.valid  },
  function(data)
  {
    alert(data);
  }); 
return true;

Когда это запускается, сообщение происходит, но ничего не возвращает.Тем не менее, когда в последней строке указано «return false», сообщение выполняется отлично и возвращает данные из файла PHP.Никаких изменений в коде PHP вообще, только возвращение true и false в JavaScript.

Есть ли для этого какая-либо разумная причина?

Ответы [ 2 ]

1 голос
/ 29 июля 2010

Возвращаемое значение используется для блокировки действия события по умолчанию.Если вы, например, вызываете эту функцию JS во время щелчка по ссылке или при отправке формы, то return true даст указание ссылке или элементу формы продолжить действие по умолчанию, которое было запрошено (например, по ссылке href).или собирается сформировать action).Большой шанс, что вы переходите на ту же страницу и, таким образом, в основном обновляете страницу.Выполнение return false заблокирует это, и вы останетесь на той же странице.

В ненавязчивом JS вам часто требуется return false, когда вы заменяете синхронные действия асинхронными (аяксическими) действиями.Однако для постепенного ухудшения следует позаботиться о том, чтобы оно работало также и тогда, когда JS отключен (как, например, когда функция returns true), что в настоящее время явно не так.Отключите JS в своем веб-браузере и повторите тестирование.Вы бы хотели, чтобы в такой ситуации все работало.

0 голосов
/ 29 июля 2010

Это выполняется на onsubmit, чтобы попытаться заставить его отправлять форму ajax вместо «истинной»? Ваше «return true» не является частью $ .post, поэтому, скорее всего, сообщит любому обработчику события, в котором он находится, продолжить выполнение действия по умолчанию.

Если это отправка формы, то вышеизложенное заставит форму отправиться в ее местоположение по умолчанию, которое может быть само собой. Это может фактически заставить его просто перезагрузить страницу, что приведет к потере обработчика событий, ожидающего ответ .post.

Если вы установите для него значение false, это означает, что страница не выполняет действия по умолчанию (отправка), поэтому она останется на странице, предоставляя обработчику события post compelte время для завершения и запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...