Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.07.2016, 09:18
Интересующийся
Отправить личное сообщение для Manoftheyear Посмотреть профиль Найти все сообщения от Manoftheyear
 
Регистрация: 20.03.2016
Сообщений: 17

Ajax. Валидация формы в модалке
Всем доброго времени суток и здравствуйте!

Помогите с отображением. Сделал регистрацию в модальном окне, без Ajax не обойтись. Всё равно познавать азы этой технологии необходимо. Моя проблема для знающих вообще easy.

Проект на PHP-фреймворке Laravel.

Сама регистрация пашет как часики, пользователь добавляется в БД, или, если они есть, приходят ошибки. Создаётся активационный код, отправляется письмо юзеру, в этой части всё нормально.

Проблема с отображением. Моих мизерных познаний JavaScript не хватает.

Значит суть. Вот скрипт:
$(function() {
	$("#form-regis").submit(function(e) {
		e.preventDefault();

		var formURL = $(this).attr("action");
		var formmethod = $(this).attr("method");
		var postData = $(this).serialize();

		$.ajax({
			type: formmethod,
			url: formURL,
			data: postData,
			cache: false,

			success: function (data) {
				console.log(data);
				
			}
		});
		return false;
	});
});


У меня проблемы только в success функции. Я не знаю как отобразить приходящие JSON данные. Если форма заполнена с ошибками, приходит вот такой объект:

Нужно сверху над формой в модалке вывести их списком.

А если форма заполнена нормально, то приходит просто вот такая фраза, тоже в JSON:

Если приходит эта фраза, нужно скрыть форму и отобразить фразу.

Буду рад вашей помощи. Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 15.07.2016, 21:21
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Без ковыряний так

var ul=[];
for(var k in obj)
   for(var i=0,s; s=obj[k][i]; i++)
      ul.push(s);
node.innerHTML='<ul class="err-msg"><li>'+ul.join('</li><li>')+'</li></ul>';


Ну то есть там объект с пропертями каждая из которых массив со строками текста. Можно по группам рендерить, но кому это нахер надо. )))

ЗЫ obj - это твой объект

Последний раз редактировалось warren buffet, 15.07.2016 в 21:24.
Ответить с цитированием
  #3 (permalink)  
Старый 15.07.2016, 21:29
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

И еще, что это за такая чудесная форма, которая проверяет все на сервере? Нормальная формат ничего неправильного не отправляет кроме капчи.
Ответить с цитированием
  #4 (permalink)  
Старый 16.07.2016, 05:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от warren buffet
Нормальная формат ничего неправильного не отправляет кроме капчи.

Это с какого перепуга такая аксиома?
Ответить с цитированием
  #5 (permalink)  
Старый 16.07.2016, 08:26
Интересующийся
Отправить личное сообщение для Manoftheyear Посмотреть профиль Найти все сообщения от Manoftheyear
 
Регистрация: 20.03.2016
Сообщений: 17

С ошибками норм!
Правда там такой объект пришлось ваше data[k][i], заменить data[0][k][i]. Ошибки чётко списком светятся -=))

А вот фраза об успешной реги не появляется, сначала появлялась вся надпись списком, символ это отдельный элемент списка (т.е. вертикальная надпись), а сейчас просто первая буква сообщения.

Помогите, пожалуйста с условием, чтоб когда ошибки срабатывал уже рабочий код для ошибок, а когда, просто фраза. Чтобы прятал форму и отображалась фраза.
Ответить с цитированием
  #6 (permalink)  
Старый 16.07.2016, 13:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Manoftheyear
чтоб когда ошибки срабатывал уже рабочий код для ошибок, а когда, просто фраза

Для этого либо определяйте тип данных, которые вернул сервер, либо передавать данные под ключами, например ошибка, это error, а сообщение message, и проверять наличие ключа - есть в данных ключ ошибки, значит вывод ошибок, иначе текст.

В данном варианте, если все так как написано, то при ошибке typeof data вернет object, иначе string.
Ответить с цитированием
  #7 (permalink)  
Старый 16.07.2016, 21:31
Интересующийся
Отправить личное сообщение для Manoftheyear Посмотреть профиль Найти все сообщения от Manoftheyear
 
Регистрация: 20.03.2016
Сообщений: 17

Всем спасибо, с божьей помощью да с вашими наставлениями написал. Вот конечный код саксэсс-функции (может кому-нибудь пригодится):
success: function (data) {
				if (typeof data == 'object') {
					var ol=[];
					for(var k in data[0]) {
						for(var i=0, s; s=data[0][k][i]; i++) {
							ol.push(s);
							errors_block.innerHTML = '<ol class="err-msg"><li>'+ol.join('</li><li>')+'</li></ol>';
						}
					}
				} else {
					success_block.innerHTML = '<p>'+data+'</p>';
					$("#form-regis").hide();
					if ($('#errors_block')) {
						$('#errors_block').hide();
					}
				}
			}
Ответить с цитированием
  #8 (permalink)  
Старый 20.07.2016, 19:05
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от laimas
Это с какого перепуга такая аксиома?
Я скозал!
Ответить с цитированием
  #9 (permalink)  
Старый 20.07.2016, 19:07
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Человек года, вместо

for(var k in data[0])

скопируй

var d=data[0]

и крути d
Ответить с цитированием
  #10 (permalink)  
Старый 21.07.2016, 01:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от warren buffet
Я скозал!

Дите несмышленное.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка формы после ajax проверки ShutTap Общие вопросы Javascript 15 08.04.2016 11:46
Отправка данных формы. Как выглядит структура метода с AJAX (по JQuery)? Coriolan161 AJAX и COMET 5 24.11.2015 20:17
ajax передача отдельной переменной и формы dmitriy94 AJAX и COMET 11 16.01.2015 23:33
Валидация формы dmsuslov jQuery 4 05.11.2010 16:12
Объясните как вызывается ajax скрипт AddressBook из формы prog90 AJAX и COMET 3 06.06.2009 16:12