Есть одна форма: логин + пароль. Работает с использованием ajax. Стоит задача: человек ввел логин, нажал отправить. на сервере происходит определенная обработка и возвращается ответ. Если ответ положительный, то человек должен ввести пароль и отправить запрос. Дело в том, что запрос от первого сабмита и второго должны уходить на разные скрипты. Это возможно или одна форма - один вариант сабмита?
Вы плохо разобрались с jQuery и Ajax, раз у Вас возникают такие вопросы.
jQuery умеет сериализовать форму, а также умеет и доставать значения из указанного элемента.
Предлагаю Вам рассмотреть два варианта решения проблемы.
jQuery умеет сериализовать формы двумя способами:
Пусть есть следующая форма:
<form id="form">
<input type="text" name="login">
<input type="password" name="password">
<input type="submit" value="login" id="form-btn">
</form>
1.Используем jQuery для сериализации в виде query string и отправки формы:
<script>
$('#form-btn').on('click', function(e) {
e.preventDefault();
var serializeStr = $('#form').serialize();
/*
* Сериализованная строка имеет вид:
* login=InputLogin&password=InputPassword
* то есть идеально подходит для query-параметров (те параметры,
* которые используются в URL при GET-запросе).
*/
var actionUrl = '/url/to/get-action?' + serializeStr;
var httpMethod = 'GET';
$.ajax({
method: httpMethod,
url: actionUrl,
success: function(response) {
alert("success: " + response);
},
error: function(xhr, data, status) {
alert("error: " + data);
}
});
});
</script>
Идеально подходит для отправки запросов методом GET.
2.Используем jQuery для сериализации в виде query string и отправки формы:
<script>
$('#form-btn').on('click', function(e) {
e.preventDefault();
var serializeData = $('#form').serializeArray();
/*
* Результат сериализации имеет вид:
* [
* {
* name:"login",
* value:"inputLogin"
* },
* {
* name:"password",
* value:"inputPassword"
* },
* .....
* ],
* то есть идеально подходит для POST-параметров.
*/
var actionUrl = '/url/to/post-action';
var httpMethod = 'POST';
$.ajax({
method: httpMethod,
url: actionUrl,
data: serializeData,
success: function(response) {
alert("success: " + response);
},
error: function(xhr, data, status) {
alert("error: " + data);
}
});
});
</script>
Плюсы:
Минусы:
Пусть мы имеем следующую структуру HTML-документа:
<div id="custom-form">
<div class="custom-form-element">
<input id="login" type="text">
</div>
<div class="custom-form-element">
<input id="password" type="password">
</div>
<div class="custom-form-button">
<button id="custom-form-btn">Login</button>
</div>
</div>
На самом деле, предоставленный код выше может быть и формой, но для наглядности - в этом случае формы использовать не будем.
Используем jQuery для отправки данных на сервер:
<script>
$('#custom-form-btn').on('click', function(e) {
e.preventDefault();
var urlLogin = 'path/to/login-action';
var urlPassword = 'path/to/password-action';
var login = $('#login').val();
var password = $('#password').val();
var loginData = {
login: login
}
var passwordData = {
password: password
}
sendAjax(urlLogin, loginData);
sendAjax(urlPassword, passwordData);
});
function sendAjax(url, data) {
$.ajax({
url: url,
method: 'POST',
data: data,
success: function(response) {
alert('Success: ' + response);
},
error: function(xhr, data, status) {
alert('Error: ' + data);
}
});
</script>
И так, выборка данных из HTML-элементов происходит вызова метода val()
. На самом деле, метод умеет не только выбирать данные, но и устанавливать их в элемент (сейчас нас это не интересует).
Метод val()
можно вызвать на элементах, позволяющих вводить данные (input/select/textarea/etc).
Если вам понадобиться достать данные из других HTML-элементов (таких как <p></p>, <span></span>
etc) можете воспользоваться следующими методами:
text()
;html()
;Плюсы:
Минусы:
<form></form>
) много - формирование данных будет занимать некоторое время.Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть много чекбоксов независимых друг от другаИ есть 2 чекбокса: id="Bort" и id="Borta" которые работают по принципу радиобаттонов, при этом можно...
На Perl использую модуль HTML::Template; Выводом странички соответственно занимается Perl-скрипт, большие куски HTML_кода вытягивая из шаблоновПосле...