20.09.2016, 19:52
|
Аспирант
|
|
Регистрация: 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();
|
|
20.09.2016, 20:18
|
|
Кандидат Javascript-наук
|
|
Регистрация: 08.03.2015
Сообщений: 131
|
|
В данном контексте error является отлов ошибок по связи с сервером ... они не как не влияют на ошибки регистрации ... success должны прийти сервера данные о том что такой пользователь уже существует и уже их обработать как ошибку.
|
|
20.09.2016, 20:30
|
Аспирант
|
|
Регистрация: 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.
|
|
20.09.2016, 20:32
|
Аспирант
|
|
Регистрация: 27.06.2016
Сообщений: 68
|
|
dd_smol,
так а как тогда предотвратить одинаковое создание логина?
|
|
20.09.2016, 20:37
|
|
Кандидат Javascript-наук
|
|
Регистрация: 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');
|
|
20.09.2016, 20:53
|
|
Кандидат Javascript-наук
|
|
Регистрация: 08.03.2015
Сообщений: 131
|
|
Сообщение от Rise
|
dd_smol, невалидный json тоже приведет к error
|
Про такие тонкости в документациях не описано ... проверять опытным путем лень. Так что поверю на слова ... но если не изменяет память отсылаемы данные не как не влияют на взаимодействие между сервером и клиентом.
|
|
20.09.2016, 20:55
|
Аспирант
|
|
Регистрация: 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');
|
Так не срабатывает
|
|
20.09.2016, 21:15
|
|
Кандидат Javascript-наук
|
|
Регистрация: 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.
|
|
20.09.2016, 21:19
|
Аспирант
|
|
Регистрация: 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();
|
|
20.09.2016, 21:22
|
|
Кандидат Javascript-наук
|
|
Регистрация: 08.03.2015
Сообщений: 131
|
|
Сообщение от Sokoljr
|
dd_smol,
Так вроде бы работает, может ли быть такой корректный код?
|
Корректный код ... понятие относительное
|
|
|
|