Отправка формы авторизации Login через ajax
Доброго времени суток!
Помогите пожалуйста разобраться, пытаюсь настроить отправку данных формы авторизации сниппета login с помощью ajax. Хотел сделать такой вариант — если пользователь ввел данные некорректно, сниппет выдавал бы ошибку без перезагрузки страницы.
Нашел вот такой вариант реализации:
Но в данном случае ответ от сниппета login не приходит, страница всегда перезагружается. Может быть необходимо произвести изменения в сниппете login чтобы он выдавал ajax ответ?
Подскажите, может быть возможно использовать для проверки данных формы сниппет ajaxform?
Помогите пожалуйста разобраться, пытаюсь настроить отправку данных формы авторизации сниппета login с помощью ajax. Хотел сделать такой вариант — если пользователь ввел данные некорректно, сниппет выдавал бы ошибку без перезагрузки страницы.
Нашел вот такой вариант реализации:
$(document).ready(function(){
//ajax Login
$("#login_form").bind("submit", function() {
//clear
$(".auth_error").text("");
if ($("#login").val().length < 1 || $("#password").val().length < 1) {
$(".auth_error").text("Для авторизации введите логин и пароль");
return false;
}
//show preloader
$.ajax({
type : "POST",
cache : false,
url : "[[~[[*id]]]]",
data : $(this).serializeArray(),
success: function(data) {
var errMessage = $(data).find(".auth_error").text();
if(errMessage == ""){
window.location = "[[~[[*id]]]]";
}else{
$(".auth_error").text(errMessage);
}
}
});
return false;
});
});Но в данном случае ответ от сниппета login не приходит, страница всегда перезагружается. Может быть необходимо произвести изменения в сниппете login чтобы он выдавал ajax ответ?
Подскажите, может быть возможно использовать для проверки данных формы сниппет ajaxform?
Комментарии: 19
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Скачайте его, разберитесь как работает и пишите что угодно…
p.s. Не сразу заметил… да именно его и используйте)
Только вот не получилось у меня настроить форму со сниппетом login.
С помощью просто стандартного вызова
сразу не работает в данном случае.
Правильно ли я понял что как-то в форму надо вернуть json массив с ключами ответа от сниппета, точно не нашел из какого метода его возвращать и куда, вероятно в логине из login/controllers/web/Login.php из метода public function prepareFailureMessage?
А переменная с классом $AjaxForm сразу доступна во всех сниппетах, или как-то вызывать необходимо ее?
Что такое .auth_error? Чанк в студию.
Причин может быть очень много, а информации очень мало.
А с преХуками пробовал?
Вероятно в этом js коде не так настроено получение ошибок от сниппета.
Ответ от сниппета я искал в журнале ошибок в error log modx, который доступен из консоли. Скажите может быть ошибки еще куда либо сохраняются?
Нет с прехуками не пробовал, а как их можно использовать в данном случае?
а ошибки [[!+errors]] у тебя пишутся снаружи этого дива
Отследил по отладчику в firefox. Пишет 301 ошибку. Ума не приложу что с этим делать(
Еще какая то ошибка стала появляться врядли к этому относится, но на всякий случай напишу ("[2014-06-23 23:11:20] (ERROR @ /index.php) Could not load class: pdofetch from pdotools.pdofetch.")
В Firefox это можно увидеть в инструментах в закладке «Сеть». Кликаешь на запрос POST и справа в окошке выбираешь закладку «Ответ».
Это если запрос POST отправлен на сервер. Если в закладке Сеть нет строчки с POST запросом, значит он не отправляется на сервер или страничка обновилась. Надо закомментировать строчку
Это ошибка pdotools. На логин не влияет.
Косяк был в этой строке
Подставлялся запрос на такую страницу
site/[[~[[*id]]]]
я заменил на
Все заработало чудесным образом))
В строчке с url скорее всего нужно было так писать
или так
а что обозначает эта запись ?
А скрипт с $.ajax где у тебя находится — в чанке, в шаблоне, в ресурсе?
А если указать адрес напрямую?
P.S. При ? &scheme=`full` адрес парсится в полный формат с протоколом и именем сайта, а не в относительный. Но для ЧПУ должен быть указан
В принципе все работает. Так и пусть работает.
Напрямую указал адресс в url, интересный момент что 200 все ок, но информация не распечатывается в [[!+errors]]. Ну работает как то и хорошо)
Перенеси его в шаблон и все будет работать как положено.
P.S. Потратил 10 минут, взял твой скрипт и чанк. Все работает.
store.simpledream.ru/office