Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.02.2022, 20:47
Интересующийся
Отправить личное сообщение для Andrew2108 Посмотреть профиль Найти все сообщения от Andrew2108
 
Регистрация: 18.02.2022
Сообщений: 22

AJAX ответ от сервера в формате JSON
Приветствую, проблема заключается в расшифровке JSON формата
Вот сам запрос:
$.ajax({
 		method: "POST",
  		url: "/Register/Register.php",
  		//dataType: 'json',
		data: { 
			login:loginVal,
			password:passwordVal,
			password2:password2Val,
			email:emailVal,
			name:nameVal
		}
	})
		.done (function(msg)
		{
		a = JSON.parse(msg);
		logInfo = "Этот логин уже занят введите другой";
		emailInfo = "Этот адрес уже занят введите другой";
		if (a===logInfo)
		{
			setErrorFor(login, logInfo);
		}
		else if(a===emailInfo)
		{
			setSuccessFor(login);
			setErrorFor(email, emailInfo)
		}
		else
		{
			$('input.login').val('');
			$('input.password1').val('');
			$('input.password2').val('');
			$('input.email').val('');
			$('input.name').val('');
			alert("Вы успешно зарегистрировались!");
		}


что значит получить ответ в формате JSON ???

Насколько я понял это нужно сделать так:
$emailinfo = json_encode('Этот адрес уже занят');
echo $emailinfo;


я зашифровал его в JSON и отправляю ответом на AJAX запрос в JS script. После я его декодирую и сверяю, если он подходит, то добавляю в базу данные.
НО он то добавляет и останавливается , почему-то в JSON.parse попадает уже расшифрованное значение ответа и следовательно выдаёт ошибку : "Uncaught SyntaxError: Unexpected token В in JSON at position 0" - а сообщение в нём "вы успешно зарегистрировались".
Он почему-то ходит по циклу, т.е. когда сообщение уже сыграло свою роль и выгрузилось из памяти в него загружается пустое значение и я не могу понять почему.

Помогите пожалуйста разобраться в чём дело.

Последний раз редактировалось Andrew2108, 22.02.2022 в 20:52. Причина: Выявил доп. неисправность
Ответить с цитированием
  #2 (permalink)  
Старый 22.02.2022, 21:45
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,267

Сообщение от Andrew2108
что значит получить ответ в формате JSON ?
Это значит получить обычную строку которая удовлетворяет формату json.
https://itchief.ru/javascript/json

Сообщение от Andrew2108
Он почему-то ходит по циклу
Ничего "само" не ходит.
Это так написали алгоритм работы.

Тебе придется самостоятельно тестить написанное или сделать тестовый пример на котором можно будет потренироваться и научиться строить алгоритмы общения с сервером.
Ответить с цитированием
  #3 (permalink)  
Старый 22.02.2022, 22:33
Интересующийся
Отправить личное сообщение для Andrew2108 Посмотреть профиль Найти все сообщения от Andrew2108
 
Регистрация: 18.02.2022
Сообщений: 22

Это весь мой проект, вы можете посмотреть, выявить и объяснить причину такого поведения ???
https://dropmefiles.com/eFnKm
Нужные файлы находятся в папке Register\Signup.js and Register.php
Ответить с цитированием
  #4 (permalink)  
Старый 23.02.2022, 09:14
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,583

Магия jQuery возможно, он по заголовкам, пробует расшифровать.
Хотя вы вроде с заголовками не заморачивались...

А если явно указать:
dataType: 'text'
Ответить с цитированием
  #5 (permalink)  
Старый 23.02.2022, 10:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,148

Andrew2108,
если ответ формате JSON, jQuery попытается самостоятельно преобразовать полученные данные, и обычно так a = JSON.parse(msg);
делать не требуется.
Ответить с цитированием
  #6 (permalink)  
Старый 23.02.2022, 11:34
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,267

Сообщение от Andrew2108
Это весь мой проект, вы можете посмотреть, выявить и объяснить причину такого поведения ?
У меня нет интереса лазить по чужим проектам...
Одно дело помочь разобрать некую не понятную ситуацию на каких-то примерах... А лазить по чужому проекту, отыскивая косяки - совсем другое дело.
Это очень неблагодарная работа.
Ответить с цитированием
  #7 (permalink)  
Старый 23.02.2022, 16:25
Интересующийся
Отправить личное сообщение для Andrew2108 Посмотреть профиль Найти все сообщения от Andrew2108
 
Регистрация: 18.02.2022
Сообщений: 22

Так он вообще минует все проверки, валидацию и говорит, что всё в порядке ща зарегистрирую спокойно.
Ответить с цитированием
  #8 (permalink)  
Старый 23.02.2022, 16:38
Интересующийся
Отправить личное сообщение для Andrew2108 Посмотреть профиль Найти все сообщения от Andrew2108
 
Регистрация: 18.02.2022
Сообщений: 22

Указал формат JSON он добавляет, но он не доходит до сюда:
else
        {
            $('input.login').val('');
            $('input.password1').val('');
            $('input.password2').val('');
            $('input.email').val('');
            $('input.name').val('');
            alert("Вы успешно зарегистрировались!");
        }


Почему? я не могу разобраться...

Последний раз редактировалось Andrew2108, 23.02.2022 в 17:55.
Ответить с цитированием
  #9 (permalink)  
Старый 23.02.2022, 18:36
Интересующийся
Отправить личное сообщение для Andrew2108 Посмотреть профиль Найти все сообщения от Andrew2108
 
Регистрация: 18.02.2022
Сообщений: 22

Добавил сообщение на сервере, отправил его в JS и вывел в условии ELSE и всё заработало. Всем спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX отказывается принимать JSON с ключами Xopc11 AJAX и COMET 7 04.01.2020 12:08
Ошибка при чтении json полученного через ajax ishurgaya Общие вопросы Javascript 7 10.12.2018 09:20
ajax $.post вместо json проблема данные не приходят Sadist_dead AJAX и COMET 2 12.07.2012 17:59
Ответ сервера в плугине ajaxForm отдается неправильно. IgorOk jQuery 11 13.12.2009 04:35
Ajax - JSON - не распознает пришедший ответ Майский Кот jQuery 1 14.05.2009 00:40