Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.12.2019, 12:06
Аспирант
Отправить личное сообщение для raja Посмотреть профиль Найти все сообщения от raja
 
Регистрация: 22.09.2016
Сообщений: 40

Как при попытке отправить форму валидировать её с помощью ajax?
Форма при попытке её отправить посылает ajax запрос. Если запрос возвращает "ок", форма отправляется, иначе выводит в alert то что вернул ajax запрос.
allow_submit = false;
				$('#new_item_form').on('submit', function (e) {
					if(allow_submit == false){
						$.post(
							'ajax_unique_name.php',
							{
								name: $('#input_name').val()
							}
						).done(function(data) {
							if(data == 'ok'){
								allow_submit = true;
							}else{
								alert(data);
							}
						}).done(function() {
							if(allow_submit == true){
								$('#new_item_form').submit();
							}
						});
						return false;
					}else{
						return true;
					}
				});

Почему-то когда ajax возвращает "ok", форма не отправляется сразу, а только при следующей попытке её отправить. Как сделать чтобы форма в этом случае сразу отправлялась?
Ответить с цитированием
  #2 (permalink)  
Старый 26.12.2019, 13:32
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от raja
Форма при попытке её отправить посылает ajax дополнительный POST-запрос. Если запрос возвращает "ок", форма отправляется, иначе выводится в alert то, что вернул ajax запрос ответ от сервера.
Да, ваш код действительно это делает уже сейчас, при условии, что сервер действительно правильно отвечает!

Сообщение от raja
Почему-то когда ajax сервер возвращает "ok", форма не отправляется сразу, а только при следующей попытке её отправить. Как сделать чтобы форма в этом случае сразу отправлялась?
Предоставленный код отправляет форму сразу в случае получения положительного ответа от сервера. Кстати ваш код можно изменить...
(function() {
	var isAllowedToSubmit = false;

	$("#new_item_form").on("submit", function(event) {
		if(isAllowedToSubmit) return true;

		event.preventDefault();
		$.post("ajax_unique_name.php", {
			name: $("#input_name").val()
		}).done(function(data) {
			if(data === "ok") {
				isAllowedToSubmit = true;
				$("#new_item_form").submit();
				isAllowedToSubmit = false;
			} else {
				alert(data);
			}
		});
	});
})();


Не используйте слово «ajax» для обозначения случайных вещей, сложно понимать людей, которые используют выражение «асинхронный JavaScript и XML» для обозначения совершенно других вещей!

Последний раз редактировалось Malleys, 26.12.2019 в 13:37.
Ответить с цитированием
  #3 (permalink)  
Старый 27.12.2019, 16:42
Аспирант
Отправить личное сообщение для raja Посмотреть профиль Найти все сообщения от raja
 
Регистрация: 22.09.2016
Сообщений: 40

Ваш код тоже не отправляет форму при корректном ответе сервера. Файлы прикладываю.
Ваш код тоже не отправляет форму при корректном ответе сервера. Файлы прикладываю. Приложите пожалуйста файлы с вашими рабочими кодами.
Вложения:
Тип файла: zip ajax.zip (845 байт, 1 просмотров)
Ответить с цитированием
  #4 (permalink)  
Старый 27.12.2019, 16:54
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

raja, нахрена же ее отправлять дважды, один раз чтобы проверить, а второй раз чтобы получить, если достаточно принять, проверить и либо сохранить и т.п., либо отвергнуть и вернуть ошибку?
Ответить с цитированием
  #5 (permalink)  
Старый 27.12.2019, 17:27
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от laimas
нахрена же ее отправлять дважды, один раз чтобы проверить, а второй раз чтобы получить, если достаточно принять, проверить и либо сохранить и т.п., либо отвергнуть и вернуть ошибку?
Например, чтобы проверить, есть ли такой пользователь, и в зависимости от наличия, показать «валидность» поля ввода имени.

Сообщение от raja
Ваш код тоже не отправляет форму при корректном ответе сервера. Файлы прикладываю. Приложите пожалуйста файлы с вашими рабочими кодами.
Так у вас в ajax.php нет никакого скрипта... но это не важно... там всегда «ok»

Ваш код тоже работает, если...
<input id="new_item" type="submit" name="submit" value="Отправить">
заменить на
<button>Отправить</button>
Ответить с цитированием
  #6 (permalink)  
Старый 27.12.2019, 17:48
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Malleys
Например, чтобы проверить, есть ли такой пользователь
А я то не знал дурак, вот только это делается на по отправлению формы, а по изменению в поле формы.
Ответить с цитированием
  #7 (permalink)  
Старый 27.12.2019, 17:57
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от laimas
А я то не знал дурак
Может не стоит делать поспешных выводов, судя по накатанным простыням в соседней теме, вы однозначно представляете другую разновидность социальных животных!
Сообщение от laimas
вот только это делается на по отправлению формы, а по изменению в поле формы.
Да, именно так! Однако, что... Нитки кончились?
Ответить с цитированием
  #8 (permalink)  
Старый 27.12.2019, 18:26
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Malleys
Да, именно так!
Ну тогда чем смущает вас то, что я написал, руки чешутся дать пояснение когда требуется? Ну так я это и так знаю. Но по коду представленному форму именно отправляют, а значит резонно - нахрена ее отправлять дважды?
Ответить с цитированием
  #9 (permalink)  
Старый 27.12.2019, 19:49
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от laimas
Но по коду представленному форму именно отправляют, а значит резонно - нахрена ее отправлять дважды?
Если её нужно было просто отправить, то не нужен никакой скрипт. Форма так и так работает!

А то, что её проверяют, это значит, что проверяют по изменению в поле формы, просто нам может показали упрощённый вариант... Иначе это всё бессмысленно, поскольку форма так и так отправляется.

Но с другой стороны может мы имеем дело с адептом AJAX... поскольку этим термином были названы — POST-запрос, сервер и ответ от сервера! Также этим термином был назван файл, который содержит слово «ок». Удивительнейшая логика! Тогда всё становится понятно — ему нужно больше AJAX!

Эта догматика (AJAX), как я понимаю, предполагает, что всё одно, и всё во всём...

Последний раз редактировалось Malleys, 27.12.2019 в 19:56.
Ответить с цитированием
  #10 (permalink)  
Старый 27.12.2019, 21:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Malleys
Но с другой стороны может мы имеем дело с адептом AJAX...
Слава богу, что вы у нас не адепт. Можно сколько долго говорить умные слова, но не понять чего вы тут вдвоем обсуждали, если

$('#new_item_form').on('submit'

и

done(function() { if(allow_submit == true){ $('#new_item_form').submit();

это уже абсурд в контексте вопроса, как отправить форму по разрешению, и это после того как она уже была на сервере. Но тем не менее весь контекст вашего обсуждения так и продолжается с этим же абсурдом.

А что ему надо, я не знаю, но если даже на клиенте и сделать по уму, но при этом сервер возьмет на веру, то все это все равно гроша не будет стоить.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как из Google Расширения отправить AJAX? $ undefined jquery sciper AJAX и COMET 2 03.08.2018 07:57
Как отправить из Ajax одну переменную и получить ответ в Ajax виде массива? olegalimov AJAX и COMET 42 14.02.2018 10:35
FancyBox как отправлять форму через Ajax ? Cutter jQuery 3 16.03.2015 17:42
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как обработать RadioButton с помощью JavaScript и AJAX MagicDawn AJAX и COMET 6 24.12.2013 20:42