Есть две формы:
<form class="form-inline" id="reg-form" method="POST" action="javascript:void(null);" onsubmit="registration()" >
<legend class="cursor-default noselect">Регистрация</legend>
<div class="form-group">
<label class="sr-only" for="exampleInputEmail3">Введите логин:</label>
<input type="text" name="login" maxlength="15" class="form-control" id="exampleInputEmail3" placeholder="Логин">
</div>
<div class="form-group">
<label class="sr-only" for="exampleInputPassword3">Пароль</label>
<input type="password" name="password" maxlength="15" class="form-control" id="exampleInputPassword3" placeholder="Пароль">
</div>
<button type="submit" class="btn btn-default">Регистрация</button>
</form>
и
<form class="form-inline" id="login-form" method="POST" action="javascript:void(null);" onsubmit="sendlogin()">
<legend class="cursor-default noselect">Вход</legend>
<div class="form-group">
<label class="sr-only" for="exampleInputEmail3">Логин:</label>
<input type="text" name="login" class="form-control" maxlength="15" id="exampleInputEmail3" placeholder="Логин">
</div>
<div class="form-group">
<label class="sr-only" for="exampleInputPassword3">Пароль</label>
<input type="password" name="password" maxlength="15" class="form-control" id="exampleInputPassword3" placeholder="Пароль">
</div>
<button type="submit" class="btn btn-default">Войти</button>
<br>
<p id = "reg-button">Регистрация</p>
</form>
И два ajax запроса по ним:
function registration() {
var reg = $('#reg-form').serialize();
$.ajax({
type: 'POST',
url: 'php/saveuser.php',
data: reg,
success: function(data) {
alert('Регистрация прошла успешно');
},
error: function(xhr, str){
alert('Возникла ошибка: ' + xhr.responseCode);
}
});
};
function sendlogin() {
var logn = $('#login-form').serialize();
$.ajax({
type: 'POST',
url: 'php/testreg.php',
data: logn,
success: function(data) {
$("#teststring").load("php/testreg.php");
},
error: function(xhr, str){
alert('Возникла ошибка: ' + xhr.responseCode);
}
});
};
Проблема в том, что первая форма и скрипт работают. Вторая, как я понял, отправляет пустые значения. Кто знает, в чём может быть проблема?
<?php
if (isset($_POST['login'])) { $login = $_POST['login'];
if ($login == '') { unset($login);} }
if (isset($_POST['password'])) { $password=$_POST['password'];
if ($password =='') { unset($password);} }
if (empty($login) or empty($password))
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
}
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
$login = trim($login);
$password = trim($password);
?>
Этим оба запроса обрабатываются.
Вы написали, что они обрабатываются один php скриптом, но url у вас заданы разные, возможно, в этом проблема?
На всякий случай, формируется всё правильно: jsfiddle
Помогли мне разгадать эту загадку. Форма правильно всё отправляла в запрос, который я, в поиске ошибок, сократил до простой выдачи результатов через echo.
Собственно логика такая, что ajax запрос отправлял данные формы в php скрипт. Скрипт где-то себе выводил результат, потом по-новой, уже с пустыми значениями, грузился на страницу. Проблема была с:
$("#teststring").load("php/testreg.php");
Надо было писать:
$("#teststring").html("php/testreg.php");
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Помогите обернуть ajax запрос, чтобы он выполнялся последовательно async: false подвисает браузер, пробовал обернуть в функцию, но вылетают ошибки