Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JQuery получение результатов запроса 
V
    Опции темы
WolfAlone
Дата 30.6.2009, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

Репутация: нет
Всего: 5



Добрый день! Использую JQuery, вот такой примерно код:

Код

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.form.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $('#authForm').ajaxForm(function() {
            $('#up').load('auth.php'); <!-- в слое "up" находиться форма ввода логина и пароля -->
        });
});
</script>


Задумка была изначально такая:
Пользователь заполняет форму авторизации, данные которой отсылаются в файл: "auth.php" если логин/пароль верны - этот файл выдает что-то типа "Вы авторизированны", если данные не верны - выдает форму обратно в <div>. Проблема заключается в том, что всё это не хочет работать. После второй-третьей попытки заполнить форму неверно - на странцу выходит одна форма, без остального контента.

Вопрос: подскажите пожалуйста, как обработать данные полученные от скрипта, и в зависимости от полученных результатов - либо уведомить пользователя о том, что данные введены не верно, либо загрузить другую страничку в слой "up". Спасибо!


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
WolfAlone
Дата 30.6.2009, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

Репутация: нет
Всего: 5



Я решил сумничать, и вместо подгрузки 
Код

<form method="post" action="auth.php">
<!-- тут код 2-х текстовых полей и кнопки Submit -->
</form>

написал начало и конец формы до слоя, в котором находятся эти самые поля. Получилось приятного мало. Из моих соображений JQuery обрабатывает только уже готовую форму, т.е. форму загруженную в страницу изначально. После подгрузки "новой" формы - он её не хочет обрабатывать, т.е. результаты "POST" - пустые!

Скажу понятнее. Раньше, в случае не правильной пары логин/пароль - загружался весь код формы авторизации целиком, т.е. <form>...</form>. Загружалось это добро в слой с именем "up". Сейчас я написал форму до и после слоя, т.е. решил загрузить в форму так сказать только новые поля. Т.е. получилось примерно так:

Код

<form>
<div id="up">
ПОЛЯ ФОРМЫ ТУТ. В случае не верного ввода пароля - перезагружаются из файла form.inc
</div></form>


При таком раскладе - вновь загруженные поля формы не обрабатываются jQuery.

Подскажите пожалуйста, как решить вопрос авторизации пользователей с помощью JQuery (без перезагрузки страницы целиком).

Ещё раз заранее спасибо!

Это сообщение отредактировал(а) WolfAlone - 30.6.2009, 16:36


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
WolfAlone
Дата 30.6.2009, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

Репутация: нет
Всего: 5



До меня дубового дошло... Ненужно перезагружать никакую форму. Нужно проверять, правильный логин/пароль или нет. Если да - грузим новую страницу. Если нет - отображаем скрытый слой (например), что логин/пароль неверный.

Собственно на основании этого возник вопрос. Отправлять данные сценарию через jQuery - я научился. Подскажите, как обработать полученный ответ (от скрипа)? А то отправиться то он отправился, а что дальше - не знаю!

P.S. Скрипт принимает данные после отправки корректно. На отправку нареканий нет.


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
IDVsbruck
Дата 30.6.2009, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 4
Всего: 22



А у этого ajaxForm callback есть? Если есть, то туда как раз и помещается возвращаемый результат. Если нет - отказывайся от этого плагина и отправляй сам - не велика проблема - функцией ajax, у которой есть callback с параметром data, в котором и хранится ответ сервера, равно как и параметр error - функция-обработчик полученной ошибки.
PM MAIL   Вверх
ksnk
Дата 30.6.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



WolfAlone, ajaxForm можно использовать для загрузки файла на сервер без перезагрузки окна, возможно еще для кроссайтового поста форм. Все остальное умеет сам jQuery и без него.

Для автоматической установки обработчиков на подгруженные ajax'ом конструкции служит конструкция live. Хотя, она, вроде не поддерживает submit...

Выглядеть код может примерно так
Код
function AuthOnSubmit (){
    $('#up').load('auth.php',function(){
        $('#authForm').unbind('submit').submit(AuthOnSubmit);
    });
}
$('#authForm').submit(AuthOnSubmit);



Это сообщение отредактировал(а) ksnk - 30.6.2009, 22:48


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
WolfAlone
Дата 30.6.2009, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

Репутация: нет
Всего: 5



С заполнением и отправкой формы у меня всё гуд! Вопрос заключается в следующем:
Например, после получения данных скрипт возвращает строку "true" в случае, если логин с парольем подошли. В противном случае возвращает flase (строку). Вопрос заключается в том, как обработать полученную от скрипта строку?


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
ksnk
Дата 30.6.2009, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



Код

$('#authForm').submit(function (data){
  if(data=='true')
      alert('Заходи!');
  else 
      alert('Не угадал!');
});



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
IDVsbruck
Дата 1.7.2009, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 4
Всего: 22



ksnk, ну-ну-ну, зачем же так человека обманывать? Функция внутри submit выполнится ДО отправки формы и у нее нет параметра.

Чтобы отправить значения, получить и обработать результат, удобнее всего воспользоваться функцией ajax:
Код
$.ajax({cache: false, data: {login:$("#login_field").val(), pass:$("#pass_field").val()}, dataType: "json", type: "POST", url: ... урл ...,
    error: function() {... отображаем окна, сообщения и т.д. ...},
    success: function(data) { // скажем, сообщение на сервере сгенерировано как "{'error':'false'}"
        if (data.error == "true") {... показываем ошибку ...}
        else {... возюкаемся с результатом...}
    }
});


PM MAIL   Вверх
ksnk
Дата 1.7.2009, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



IDVsbruck, Угу... чего-то потормозил :-(
Код

$('#authForm').submit(function (){
  $[this.method.toLowerCase()](this.action, $(this).serialize(),function(data){  
    if(data=='true')
      alert('Заходи!');
    else 
      alert('Не угадал!');
  });
  return false;
})


Добавлено через 3 минуты и 15 секунд
IDVsbruck, А зачем в примере datatype:json? 

Это сообщение отредактировал(а) ksnk - 1.7.2009, 07:48


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
WolfAlone
Дата 1.7.2009, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

Репутация: нет
Всего: 5



Увадаемый ksnk! Выражаю Вам огромную благодарность! Не хватало всего-то 3х строк кода. Теперь, благодаря Вам - вопрос решён!

Это сообщение отредактировал(а) WolfAlone - 1.7.2009, 09:02


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
IDVsbruck
Дата 2.7.2009, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 4
Всего: 22



Цитата(ksnk @  1.7.2009,  07:47 Найти цитируемый пост)
IDVsbruck, А зачем в примере datatype:json?

Как для примера, возможно, и лишняя - из реального кода выколупывал. А в жизни постоянно использую, когда ответ json - не надо ни парсить, ни со строками возиться, сразу можно обращаться к полям объекта. Только вот на сервере надо правильный респонс-тайп назначить smile, иначе глючит.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0581 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.