Intereting Posts
Memcached: как прервать ограничение при извлечении всех ключей Symfony2 Пользовательская ошибка 404 страница Как искать html-файл для простой строки? 500 Ошибка сервера: преждевременный конец заголовков сценариев: Соединение отклонено при запуске stream_socket_server & client через apache MVC Design. Сколько контроллеров может / должно / должно быть иметь в проекте веб-приложения CodeIgniter MVC? Как увеличить счетчик на каждую загрузку страницы (в PHP)? PHP голосование, по одному голосу за каждый IP-адрес в день: нужна кодовая помощь Проверьте, перекрывается ли два раза замена pdo in для проблем mysql Безопасный сеанс PHP и файлы cookie phpunit не находит никаких тестов с тегом Director xml, но делает с (некоторыми) файлами теги Использовать NoSQL в MySQL Как создать каскадные выпадающие списки с использованием mysql и php Создание PDF-файлов с использованием TCPDF, поддерживающих все языки, в особенности CJK

Почему эта функция возвращает "undefined"?

У меня есть функция проверки формы, которая проверяет, а также проверяет, берется ли имя пользователя или нет (ajax).

Вот как я называю код:

function validate(){ if(usernameValid()){ return true; } else { return false; } } 

Я также предупреждаю эту функцию, чтобы увидеть, что она возвращает:

  alert(usernameValid()); 

Проблема в том, что в некоторых случаях предупреждающее сообщение предупреждает «Undefined», поэтому моя проверка не переходит в следующее поле, оно зависает. Чтобы быть более конкретным, он предупреждает «Undefined» во всех случаях, кроме случаев, когда «length === 0», а затем он предупреждает ложь, что является правильным.

Вот функция usernameValid:

  function usernameValid(fld) { if( $('#username').val().length !== 0 ) { $.post("username_check.php", { username: $('#username').val() }, function(response){ response = escape(response); if(response==1){ $('#username_error_invalid').show(); $('#username_error_empty').hide(); $('#username_error_taken').hide(); return false; } else if(response==2){ $('#username_error_taken').show(); $('#username_error_invalid').hide(); $('#username_error_empty').hide(); return false; } else { $('#username_error_taken').hide(); $('#username_error_invalid').hide(); $('#username_error_empty').hide(); return true; } }); } else{ $('#username_error_empty').show(); $('#username_error_invalid').hide(); $('#username_error_taken').hide(); return false; } } 

Кто-нибудь знает, что не так, то есть почему код возвращается неопределенным в тех случаях, когда я тестирую переменную «ответ»?

BTW: сама проверка подлинности для имени пользователя (ошибка отображается, когда она должна и т. Д.), Но возвращает неопределенные …

благодаря

Related of "Почему эта функция возвращает "undefined"?"

Это асинхронный вызов:

 $.post("username_check.php", {.... 

Таким образом, операторы return в return вызове происходят задолго после того, как usernameValid возвращает (и поскольку он ничего не возвращал, когда он был запущен , он не undefined ).

Где вы return false; вы должны вызвать другую функцию, например: userNameInvalidFunction() и что-то еще для true … или просто продолжить отправку и т. д.

Альтернатива – сделать синхронный вызов AJAX … но я настоятельно рекомендую против этого, так как он полностью заблокирует браузер пользователя во время его выполнения.