Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 25.03.2014, 22:30
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Сообщение от nerv_
Я использовал эту функцию только в тестах и современных браузерах а он собрался кликать за пользователя и сабмитить
Какую функцию? Что не так в программных кликах и сабмитах?
Ответить с цитированием
  #32 (permalink)  
Старый 25.03.2014, 22:46
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Есть приложение - движок сайта. Есть в нем модуль управления статьями. Есть в нем функционал добавления статьи.
Пользователь пишет статью, в процессе его сеанс заканчивается и он становится неавторизованным юзером. Но он узнает об этом лишь когда его выкинет на страницу авторизации при попытке сохранить статью. Я написал на php функционал хранения данных, которые пользователь вводил, так что катастрофы не будет, если юзер там поэму настрочил - все восстановится. Но вот захотел я сделать так, чтобы авторизация проверялась перед отправкой формы и чтобы подтвердить авторизацию юзер мог тутже - без перебросов на другие страницы.
Ну так и сделай функцию, которая запускает один колбек в случае, если пользователь авторизован, и другой - если пользователь не авторизован.

Но слишком обобщать - тоже не хорошо. При чрезмерном повышении уровня теряется гибкость.

Последний раз редактировалось Erolast, 25.03.2014 в 22:51.
Ответить с цитированием
  #33 (permalink)  
Старый 25.03.2014, 22:56
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Сообщение от Erolast
Ну так и напиши функцию, которая запускает один колбек в случае, если пользователь авторизован, и другой - если пользователь не авторизован.
Хорошо, упростим задачу. Я хоть убей не могу понять...
Вот функция которая перехватила форму
function checkForm(){
	// проверяет форму...
	// нет у нас никаких модулей проверки авторизации, тупо делаем все тут
	// нужно сделать ajax запрос...
	// запрос асинхронный - никто никого не ждет...
	// все нужно что-то вернуть - true или false... что вернуть!?
	// если вернуть true - форма уйдет и все проверки авторизации идет лесом
	// если false - то нужно потом при удачной проверке или удачном подтверждении (а это еще запросы) сделать submit этой чертовой формы
}
Ответить с цитированием
  #34 (permalink)  
Старый 25.03.2014, 23:15
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Смысл в том, что я перехватил клик юзера и нужно что-то решать. Но я не могу ничего решить пока не получу ответ сервера.
Ответить с цитированием
  #35 (permalink)  
Старый 25.03.2014, 23:19
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Ну так делай/не делай субмит программно по приходу ответа от сервера, когда уже будешь знать, авторизован ли пользователь.
Ответить с цитированием
  #36 (permalink)  
Старый 25.03.2014, 23:26
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

<script>
function send_data()
{
  //Хорошей идеей было бы оповестить пользователя, что идет проверка авторизации.
  //Делаем запрос на сервер, вешаем колбек с соответствующими проверками - если пользователь авторизован, делаем document.getElementById("myform").submit(), не авторизован - выдаем ошибку, открываем окно авторизации.
}
</script>

<form id="myform" action="data_reciever.php">
<textarea></textarea>
<button onclick="send_data()">Отправить</button>
</form>
Ответить с цитированием
  #37 (permalink)  
Старый 25.03.2014, 23:34
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Сообщение от Erolast
Ну так делай/не делай субмит программно по приходу ответа от сервера, когда уже будешь знать, авторизован ли пользователь.
Ну так я так и делаю!
Но только товарищ nerv_ считает это корявой акхитектурой.
Единственным условием для успешного запуска модуля проверки авторизации, является передача ему ссылки на объект, по которому кликнул юзер, будь то кнопка, ссылка, форма... неважно. Главное чтоб это был объект, у которого есть click() или submit();
Так сделано, потому что модуль как бы общий, и использовать его может любой модуль сайта.

Ладно, проблема-то решена уже давно
Ответить с цитированием
  #38 (permalink)  
Старый 25.03.2014, 23:35
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Erolast,
Да... если задержка более 500мс, то юзер увидит анимацию и оповещение, что скрипт чего-то там делает... надо обождать. Это тоже все уже есть
Ответить с цитированием
  #39 (permalink)  
Старый 25.03.2014, 23:43
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Ну так я так и делаю!
Судя по твоим сообщениям, ты пытаешься отменять стандартный браузеровский субмит. А этого сделать в твоем случае невозможно, потому-что на момент, когда отменить можно, необходимых данных нету, а потом уже поздно. Поэтому надо вызывать функцию по обычной кнопке, а не по <input type="submit">, функцией отправлять запрос к серверу, вещать на запрос колбек, и только там, если пользователь авторизован, искусственно вызывать субмит формы.
И не надо никуда никаких элементов передавать.

Последний раз редактировалось Erolast, 25.03.2014 в 23:49.
Ответить с цитированием
  #40 (permalink)  
Старый 25.03.2014, 23:54
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Сообщение от Erolast
Судя по твоем сообщения, ты пытаешься отменять стандартный браузеровский субмит. А этого сделать в твоем случае невозможно, потому-что на момент, когда отменить можно, необходимых данных нету, а потом уже поздно. Поэтому надо вызывать функцию по обычной кнопке, а не по <input type="submit">, функцией отправлять запрос к серверу, вещать на запрос колбек, и только там, если пользователь авторизован, искусственно вызывать субмит формы.
Почему невозможно, и зачем какой-то левый инпут?
Является ли объект DOM объектом
Сообщение от Erolast
А этого сделать в твоем случае невозможно, потому-что на момент, когда отменить можно, необходимых данных нету, а потом уже поздно
Это и решает модуль проверки авторизации.
Если ему передали DOM объект на котором произошел click, то он отменить действие и приступит к работе.
В случае успешной проверки на сервере или при любых ошибках в работе, он программно совершит отмененное действие.
Если юзер потерял авторизацию, то будет выведена форма авторизации.
Если юзер верно введет все, то получить сообщение, типа все ОК пуляй форму.
Если N-ное кол-во раз он неверно укажет логин/пароль, то скрипт отключится и перестанет перехватывать данные с формы авторизации. Ну и юзер уже физически отправится по action, указанный в форме авторизации, а там уже сервер ему что-то скажет
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery: 'accepts': есть null или не является объектом sitesv Элементы интерфейса 0 08.04.2013 13:44
$('li').get(0) не является объектом? ololosh jQuery 7 25.07.2012 22:47
JQuery как из присланой ajax-ом data сделать DOM объект vuler Общие вопросы Javascript 1 16.04.2012 23:43
Перевод на новую строку JS воспринимает как объект DOM Rig Events/DOM/Window 6 26.12.2011 20:08
Почему jQuery является одновременно функцией и объектом? FINoM jQuery 3 14.02.2011 02:44