Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.09.2016, 19:52
Аспирант
Отправить личное сообщение для Sokoljr Посмотреть профиль Найти все сообщения от Sokoljr
 
Регистрация: 27.06.2016
Сообщений: 68

AJAX срабатывает, но нет ошибок, даже если намеренно их сделать
Вот часть кода, здесь происходит регистрация на сервере, все работает, пользователь регистрируется, success срабатывает - выводится алерт и закрывается модалка, НО - регистрироваться можно хоть 100 раз под одним и тем же ником, error - не срабатывает ( если ник такой уже есть, то высвечивалась надпись), на чистом JS работает, на jquery не получается




function signUp() {
        $('#regBtn').on('click', function(event) {	
                event.preventDefault();
	        var newName = $("#newName").val();
	        var newPass = $("#newPass").val();
	        var registration = {
	         	"username": newName,
		         "password": newPass
		};
	        var jsonStr;
		jsonStr = JSON.stringify(registration);
                $.ajax({
	             type: "POST",
	            contentType: "application/json",
	            url: urlMain + "api/register/",
	            data: jsonStr,            
	            dataType: "json",
	            success: function (data){
	                alert("Successful registration! Now Log In"); 
	                $("#modalReg").modal("hide");                          
	            },
	            error: function (data) {                 
	                var registrationValid = $(".validRegistration").addClass("validRegistration");
	            }              
	        });
	    });
	}
	signUp();
Ответить с цитированием
  #2 (permalink)  
Старый 20.09.2016, 20:18
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

В данном контексте error является отлов ошибок по связи с сервером ... они не как не влияют на ошибки регистрации ... success должны прийти сервера данные о том что такой пользователь уже существует и уже их обработать как ошибку.
Ответить с цитированием
  #3 (permalink)  
Старый 20.09.2016, 20:30
Аспирант
Отправить личное сообщение для Sokoljr Посмотреть профиль Найти все сообщения от Sokoljr
 
Регистрация: 27.06.2016
Сообщений: 68

Сообщение от Rise Посмотреть сообщение
покажи
function signUp() {
    document.querySelector('#regBtn').addEventListener('click', function () {
        var newName = document.getElementById("newName").value;
        var newPass = document.getElementById("newPass").value;
        var registration = 'username=' + newName + '&password=' + newPass;
        var xhrRegistration = new XMLHttpRequest();
        xhrRegistration.open('POST', 'http://smktesting.herokuapp.com/api/register/', true);
        xhrRegistration.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        xhrRegistration.setRequestHeader('Accept', "application/json");
        xhrRegistration.onreadystatechange = function () {
            if (this.readyState === 4) {
                xhrRegistration.onload = function () {
                    gsonProductComments3 = JSON.parse(xhrRegistration.responseText);
                    if (gsonProductComments3.success === true) {
                        alert("Successful registration! Now Log In");
                        $("#modalReg").modal("hide");
                    }
                    else {
                        var registrationValid = document.querySelector(".validRegistration");
                        registrationValid.className = "validRegistration";
                    }
                };
            }
        };
        xhrRegistration.send(registration);
    });
}
signUp();

Последний раз редактировалось Sokoljr, 20.09.2016 в 20:36.
Ответить с цитированием
  #4 (permalink)  
Старый 20.09.2016, 20:32
Аспирант
Отправить личное сообщение для Sokoljr Посмотреть профиль Найти все сообщения от Sokoljr
 
Регистрация: 27.06.2016
Сообщений: 68

dd_smol,
так а как тогда предотвратить одинаковое создание логина?
Ответить с цитированием
  #5 (permalink)  
Старый 20.09.2016, 20:37
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Что то наподобие этого должно быть.
$.post(urlMain + 'api/register/', jsonStr, function ( data ) {
	if ( data.success === true ) {
		alert("Successful registration! Now Log In"); 
		$("#modalReg").modal("hide");   

	} else {
		var registrationValid = $(".validRegistration").addClass("validRegistration");
	}
}, 'json');
Ответить с цитированием
  #6 (permalink)  
Старый 20.09.2016, 20:53
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Сообщение от Rise Посмотреть сообщение
dd_smol, невалидный json тоже приведет к error
Про такие тонкости в документациях не описано ... проверять опытным путем лень. Так что поверю на слова ... но если не изменяет память отсылаемы данные не как не влияют на взаимодействие между сервером и клиентом.
Ответить с цитированием
  #7 (permalink)  
Старый 20.09.2016, 20:55
Аспирант
Отправить личное сообщение для Sokoljr Посмотреть профиль Найти все сообщения от Sokoljr
 
Регистрация: 27.06.2016
Сообщений: 68

Сообщение от dd_smol Посмотреть сообщение
Что то наподобие этого должно быть.
$.post(urlMain + 'api/register/', jsonStr, function ( data ) {
	if ( data.success === true ) {
		alert("Successful registration! Now Log In"); 
		$("#modalReg").modal("hide");   

	} else {
		var registrationValid = $(".validRegistration").addClass("validRegistration");
	}
}, 'json');
Так не срабатывает
Ответить с цитированием
  #8 (permalink)  
Старый 20.09.2016, 21:15
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Сообщение от Sokoljr Посмотреть сообщение
Так не срабатывает
Я бы еще HTML посмотрел и на данные приходящие с сервера в data.

Вы так делаете?
jQuery(function ( $ ) {
	$('#regBtn').click(function ( e ) {
		$.post('http://smktesting.herokuapp.com/api/register/', $(this).closest('form').serialize(),
			function ( data ) {
				if ( typeof data === 'object' && data.success ) {
					$("#modalReg").modal("hide");
				} else {
					// Смысл сего действия для меня загадка т.к. тупа находит класс и перезаписует его же.
					$('.validRegistration').addClass('validRegistration');
				}
			}, 'json');
	});
});

Последний раз редактировалось dd_smol, 20.09.2016 в 21:19.
Ответить с цитированием
  #9 (permalink)  
Старый 20.09.2016, 21:19
Аспирант
Отправить личное сообщение для Sokoljr Посмотреть профиль Найти все сообщения от Sokoljr
 
Регистрация: 27.06.2016
Сообщений: 68

dd_smol,


Так вроде бы работает, может ли быть такой корректный код?



function signUp() {
	    $('#regBtn').on('click', function(event) {
	    	event.preventDefault();
	        var newName = $("#newName").val();
	        var newPass = $("#newPass").val();
	        var registration = {
	        	"username": newName,
		        "password": newPass
		    };
	        var jsonStr;
		    jsonStr = JSON.stringify(registration);
			    $.ajax({
	            type: "POST",
	            contentType: "application/json",
	            url: urlMain + "api/register/",
	            data: jsonStr,            
	            dataType: "json",
	            success: function (data) {
	            	if (data.success === true) {
		                alert("Successful registration! Now Log In"); 
		                $("#modalReg").modal("hide");
	                } else {
	                	$('.validRegistration').addClass('validRegistration');
	                }                          
	            }              
	        });
	    });
	}
	signUp();
Ответить с цитированием
  #10 (permalink)  
Старый 20.09.2016, 21:22
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Сообщение от Sokoljr Посмотреть сообщение
dd_smol,
Так вроде бы работает, может ли быть такой корректный код?
Корректный код ... понятие относительное
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имя файла не соответствует имени класса - итог приложение не запускается, ошибок нет khusamov ExtJS 15 29.05.2015 15:58
Найти фрагмент в тексте, и если его нет, то ... ozzee Общие вопросы Javascript 1 03.05.2015 16:35
Не работает AJAX если есть перевод строки pashin76 AJAX и COMET 17 02.10.2013 13:36
Если в input value сделать div видимым djonA Общие вопросы Javascript 2 03.09.2013 22:42
Не могу сделать ajax запрос jazzz13 AJAX и COMET 4 17.05.2012 16:31