Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: AJAX обработка форм

Столкнулся с проблемой при выполнении AJAX обработки форм:

Форма:
<form method="post" action="functions/auth.php">
                <ul id="inputEmailPass">
                    <h3>Вход</h3>
                    <p id="messageAuth">Неверный логин или пароль!</p>
                    <li><center><input type="text" name="authLogin" id="authLogin" placeholder="Введите логин"></center></li>
                    <li><center><input type="password" name="authPass" id="authPass" placeholder="Пароль"></center></li>
                    <ul id="listAuth">
                        <li><input type="checkbox" name="rememberMe" id="rememberMe"><label for="rememberMe">Запомнить меня</label></li>
                        <li><a id="remindPass" href="#">Забыли пароль?</a></li>
                    </ul>
                    <p align="right" id="buttonAuth"><a>Вход</a></p>
                </ul>
            </form>


$(document).ready(function() {
var authLogin = $("#authLogin").val();
    	var authPass = $("#authPass").val();

    	if(authLogin === "" || authLogin.length > 30) {
    		$("#authLogin").css("borderColor", "#FDB6B6");
    		sendLogin = 'no';
    	} else {
    		$("#authLogin").css("borderColor", "#DBDBDB");
    		sendLogin = 'yes';
    	}

    	if(authPass === "" || authPass.length > 15) {
    		$("#authPass").css("borderColor", "#FDB6B6");
    		sendPass = 'no';
    	} else {
    		$("#authPass").css("borderColor", "#DBDBDB");
    		sendPass = 'yes';
    	}

    	if($("#rememberMe").prop('checked')) {
    		authRememberMe = 'yes';
    	} else {
    		authRememberMe = 'no';
    	}

    	if(sendLogin === 'yes' && sendPass === 'yes') {
    		$("#buttonAuth").hide();
    		$.ajax({
    			type: "POST",
    			url: "functions/auth.php",
    			data: "login=" + authLogin + "&pass=" + authPass + "&rememberMe=" + authRememberMe,
    			dataType: "html",
    			cache: false,
    			success: function(data) {
    				if(data == 'yesAuth'){
    					location.reload();
    				} else {
    					$("#messageAuth").slideDown(400);
    					$("#buttonAuth").show();
    				}
    			}
    		});
    	}
    });

});


и PHP обработчик:
<?php
require_once "functions.php";

if($_SERVER["REQUEST_METHOD"] == "POST") {
	$login = strtolower(clearString($_POST['login']));
	$pass = strrev(md5(clearString($_POST['pass'])));
	$pass = strtolower("ah40d".$pass."m6me9w");

	if($_POST['remrmberMe'] == 'yes'):
		setcookie('rememberMe', $login.'+'.$pass, time() + 3600*24*31, "/");
	endif;

	connectDB();
	$query = $mysqli->query("SELECT * FROM `users` WHERE `login`='$login' AND `pass`='$pass'");
	closeDB();
	$rows = $query->num_rows;
	if($rows > 0):
		$userSession = resultToArray($query);

		$_SESSION['auth'] = 'yesAuth';
		$_SESSION['authPass'] = $userSession['pass'];
		$_SESSION['authLogin'] = $userSession['login'];
		$_SESSION['authSurname'] = $userSession['surname'];
		$_SESSION['authName'] = $userSession['name'];
		$_SESSION['authPatronymic'] = $userSession['patronymic'];
		$_SESSION['authAddress'] = $userSession['address'];
		$_SESSION['authPhone'] = $userSession['phone'];
		$_SESSION['authEmail'] = $userSession['email'];

		echo 'yesAuth';
	else: echo 'noAuth';
	endif;
}


Обработчик PHP проверял отдельно (менял POST на GET и передавал переменные) - возвращает "yesAuth", а вот все вместе не работает - пишет "не верный логин или пароль"...
В чем может быть проблема? я как то не правильно передаю формы?
Ответ:
Сообщение от ПавелСедой
Почему не подходит crypt()? Насколько я понял он же генерирует хэш с солью и уже их я храню в базе, не так?
А где здесь $pass = strrev(md5(clearString($_POST['pass']))); crypt(), тут md5 перевернутая, где соль? ) Подойдет конечно, но если РНР 5.5 то то что я говорил. Ну а самое страшное, это дыра в запросе, да еще к такой таблице.
Вопрос: Ajax recapcha форма без валидации

Добрый день.

Ищу самую простую форму на AJAX c reCapcha. Код с использованием AJAX-а работает, код с reCapcha тоже работает (и тот и другой отправляет письмо мне на почту). Вместе получается обычная форма с редиректом на страницу с результатом form.php. Достаточно одного поля с именем пользователя и кнопки "отправить".

Спасибо.
Ответ: laimas,
я добавила валидацию на JS и ограничения в HTML (
maxlength, pattern, type="email"
и т.п.). Если не будет пройдена проверка, то форма не отправится. Если у пользователя отключен JS, то AJAX не должен работать. Вставила в textarea
";echo phpinfo();
Форма мне не отправляет на почту то, что после кавычек, но после отправки содержимое формы изчезает. Интересно, как пользователь мне может навредить, если поле с формой изчезает? Продолжаю делать валидацию.
Вопрос: ajax отправка формы

Всем привет!
Как сделать так чтобы форма отправлялась не по нажатию кнопки а при вводе данных в поля (Автоматический подсчёт).
P.S в примере jquery, но можно помочь и на JavaScript дальше разберусь.
Заранее спасибо
<form id="ajax-calculation-form" action="<?=$_SERVER['PHP_SELF']?>" method="POST">
Количество человек:
<input type="text"  id="input1" name="number1" size="5" pattern="\d{1,5}" >
Количество дней:
<input type="text"  id="input2" name="number2" size="5" pattern="\d{1,5}" >
</form>

jQuery(document).ready(function() {
jQuery("#ajax-calculation-form").submit(function(){
var str = jQuery(this).serialize();
alert(str);
jQuery.ajax({
type: "POST",
/*url: "/wp-content/themes/clean_by_saxap/calc/calc.php",*/
url: "wp-content/themes/bridge/hostelcalc/calc.php",
data: str,
success: function(msg) {

if(msg == 'OK') {
/*result = '<div class="notification_ok">Ваше сообщение было отправлено</div>';*/
result = '';
$("#fields1").hide();
} else {
result = msg;
}
jQuery('#note1').html(result)/*.fadeIn().delay(3000).fadeOut("slow");*/

/*$(".btn_calc").on( "click", function() {*/

jQuery(".btn_calc").on( "click", function() {

jQuery.when( effect() ).done(function() {

});
});
}
});
return false;
});
});
Ответ: Спасибо Вам большое!
jQuery(document).ready(function() {
jQuery("#ajax-calculation-form").keyup(function(){
var str = jQuery(this).serialize();
alert(str);
jQuery.ajax({
type: "POST",
/*url: "/wp-content/themes/clean_by_saxap/calc/calc.php",*/
url: "wp-content/themes/bridge/hostelcalc/calc.php",
data: str,
success: function(msg) {

if(msg == 'OK') {
/*result = '<div class="notification_ok">Ваше сообщение было отправлено</div>';*/
result = '';
$("#fields1").hide();
} else {
result = msg;
}
jQuery('#note1').html(result)/*.fadeIn().delay(3000).fadeOut("slow");*/

/*$(".btn_calc").on( "click", function() {*/

jQuery(".btn_calc").on( "click", function() {

jQuery.when( effect() ).done(function() {

});
});
}
});
return false;
});
});
Вопрос: Помощь с обработкой формы Ajax

Приветствую, есть форма, обработка через Ajax, если поля не заполнены, все срабатывает нормально и текст с ошибками добавляет. Но если все формы заполнены, заявка непонятно как себя ведет, текст об ерорах удаляется, но текст об успешной отправки и закрытие окна (в попапе открывается) не происходит, хотя вроде бы все верно написано и при успешной отправке должно выводиться сообщение и через 5 сек закрывать окно, что не так?

var individualSize = {
    popup: function() {
        $('#individualSize input').val('');
        $('#individualSizeError').empty();
        $('#individualSize_ok').hide();
        $('#individualSize_body').show();
        $('#individual_page').val(location.href);
    },
    ajax: function() {
        var errors = false;
        $('#individualSizeError').empty();
        $('#individualSize input').each(function(i, input){
            if ($(input).val() == '') {
                $('#individualSizeError').append($('<li/>').text('Заполните поле ' + $(input).attr('placeholder')));
                errors = true;
            } else if (input.id == 'individual_email' && input.value != '' && validateEmail(input.value) === false) {
                $('#individualSizeError').append($('<li/>').text('Поле ' + input.placeholder + ' заполнено не верно'));
                errors = true;
            }
        });
        if (!errors) {
            $.ajax({
                url: '/sozdayte-kartinu/',
                type: 'post',
                data: $('#individualSize form').serialize(),
                dataType: 'json',
                success: function(json) {
                    if (json.error === false) {
        $('#individualSizeError').empty();
                        individualSize.popup();
                        $('#individualSize_ok').show();
                        $('#individualSize_body').hide();
                        setTimeout(function(){
                            $('#individualSize').find('.mfp-close').click();
                        }, 5000);
                    }
                }
            });
        }
    }
}
Ответ:
Сообщение от Dilettante_Pro
И что пишет?
ответил вам в лс
Вопрос: Обработка формы | Как быть ?

Помогите собрать форму , не понимаю что сделать на стороне jquery , а что на php.

Форма пример , только щас накатал , но принцип тот же:

Все с помощью Ajax (не нужны перезагрузки страницы и переходы на другие)

<form id="formachka">
<select name="komplekt">
<option value="odin">Один 1000</option>
<option value="dva">Два 2000</option>
<option value="tri">Три 3000</option>
</select>

<select name="dostavka">
<option value="segodnya">Сегодня +100</option>
<option value="zavtra">Завтра +200</option>
<option value="poslezavtra">Послезавтра +300</option>
</select>

<select name="oplata">
<option selected="selected" value="nal">Наличные</option>
<option value="karti">Карты</option>
<option value="yandex">Яндекс</option>
<option value="qiwi">Qiwi</option>
</select>

<input type="hidden" name="summa" value="">

<input type="button" id="otpravka" value="Отправить" />


</form>


Цель:
1. Суммировать komplekt + dostavka и поместить в скрытое поле summa

2. Несколько условий после нажатия на "Отправить":
2.1 Если в oplata "nal" отправить все на почту и высветить юзеру табличку что все гуд.
2.2 Если в oplata "karti" то собрать скрытую для юзера форму на основе ранее собранных данных ,но отправить её методом POST по ссылке , при этом дать понять что через 5 секунд юзер будут перенаправлен.

Как это все реализовать ?

Если я правильно понимаю , то все это нужно отправить с помощью AJAX методом POST в обработчик например pbrabotka.php
Там суммировать komplekt + dostavka и поместить в summa
Проверить что было в dostavka и отправить либо на почту , либо выдать необходимые данные. А вот как их выдать ?
Ответ: Последний раз:
1) чтобы считать на клиенте, ему нужно передать данные в удобном формате, у вас такого нет ибо ваша форма от фонаря;
2) чтобы там не считал клиент, сервер обязательно должен все проверять, на чем это должно основываться в вашем случае только богу известно;
3) по причине п. 2, процесс обмена данными клиента с сервером (отправка формы) подразумевает диалог, на чем его основывать не известно.

И чего вам надо?

Есть несколько подходов, либо данные, которые надо просчитывать, отдают клиенту в виде объекта, любо их прописывают в атрибутах элементов, либо можно отправить и на сервер запрос, а там просчитать.

Вы накапали типа Сегодня +100, и считаете это нормальным, все равно скажут как парсить текст в поисках цифр?

Думайте над представлением своих данных как на сервере так и на клиенте, тогда и форма будет удобна для клиентского сценария, и код ее обслуживающий подобающий.
Вопрос: как выполнить ajax функцию не через submit, а через обычный div?

Здравствуйте. Такая вот ситуация. Есть ajax функция:
$(function(){
        $('#ajaxlogin').on( "submit", function(e) {
            e.preventDefault();
            $.ajax({
                type: "POST",
                url: "ajaxlogin.php",
                data: $('#ajaxlogin').serialize(),
                success: function(data){
                    alert(data);
                }
            });
        });
    });

,и она работает, когда я нажимаю на input type="submit". Подскажите, как сделать, чтобы она работала, когда я нажимаю на div с классом, например, send?
И вот еще вопрос сюда же. Если это будет div, то скорее всего форма не будет отправляться по нажатию на кнопку Enter. Как сделать, чтобы это происходило?

Вообще это функция отправки формы на сервер, если я сделаю так:

$('.send').click(function(){
$.ajax...
});

или так:
$('.send').submit();
, то на почту придёт пустое письмо, поэтому наличие $('#ajaxlogin') обязательно. Однако в форме уже присутствует один submit и его трогать нельзя. По идее, в начале происходит ajax отправка формы на сервер, там она проверяется, если всё верно, то имитируется нажатие на кнопку submit...
Ответ:
Сообщение от drkrol
Вот такая вот форма. Мне нужно избежать нажатие на submit.

$('#ajaxlogin').trigger('submit') - это не нажатие на submit, это запуск обработчика формы onsubmit ранее на нее установленный, собственно это программная отправка формы. И это не мое решение, а разработчиков jQ.
Вопрос: Добавление данных в ajax

Есть ajax отправки формы:
$(document).on("submit", ".eform", function (e) {

        e.preventDefault();
        var result;

        var m_method = $(this).attr('method');

        var m_action = $(this).attr('action');

        var m_data = $(this).serialize();
            $.ajax({
                type: m_method,
                url: m_action,
                data: m_data,
                resetForm: 'true',
                success: (function (result) {
                    if (result == 'success') {
                        msg = 'Ваше сообщение было отправлено';
                    }
                    else {
                        msg = 'Ошибка';
                    }
                    return false;

                })
            });
});

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

а) либо в форму при выборе на странице ничего не попадет, проверяйте это в отладчике (F12)

б) либо организация приема данных от клиента и получение формы имеет ошибки, как то прием формы затирает данные в сессии, если она используется в сценарии.

г) другие причины, которые надо выяснять
Вопрос: Ajax. Валидация формы в модалке

Всем доброго времени суток и здравствуйте!

Помогите с отображением. Сделал регистрацию в модальном окне, без Ajax не обойтись. Всё равно познавать азы этой технологии необходимо. Моя проблема для знающих вообще easy.

Проект на PHP-фреймворке Laravel.

Сама регистрация пашет как часики, пользователь добавляется в БД, или, если они есть, приходят ошибки. Создаётся активационный код, отправляется письмо юзеру, в этой части всё нормально.

Проблема с отображением. Моих мизерных познаний JavaScript не хватает.

Значит суть. Вот скрипт:
$(function() {
	$("#form-regis").submit(function(e) {
		e.preventDefault();

		var formURL = $(this).attr("action");
		var formmethod = $(this).attr("method");
		var postData = $(this).serialize();

		$.ajax({
			type: formmethod,
			url: formURL,
			data: postData,
			cache: false,

			success: function (data) {
				console.log(data);
				
			}
		});
		return false;
	});
});


У меня проблемы только в success функции. Я не знаю как отобразить приходящие JSON данные. Если форма заполнена с ошибками, приходит вот такой объект:

Нужно сверху над формой в модалке вывести их списком.

А если форма заполнена нормально, то приходит просто вот такая фраза, тоже в JSON:

Если приходит эта фраза, нужно скрыть форму и отобразить фразу.

Буду рад вашей помощи. Заранее спасибо.
Ответ:
Сообщение от warren buffet
Я скозал!

Дите несмышленное.
Вопрос: AJAX отправка формы без перезагрузки страницы

Здравствуйте!
Есть форма на Wordpress, которая вставлена во всплывающее окно.
Проблема заключается в том, что после отправки формы происходит переход по ссылке вида:
/страница/?success=1&post_id=4436
, страница перезагружается и мое открытое модальное окно, в котором теперь должно быть сообщение об успешной или неудачной отправке пропадает (вновь сворачивается)..
Получается, что нужно сделать переход по ссылке без перезагрузки страницы. Догадываюсь, что это можно сделать при помощи AJAX, но, к сожалению пока совсем в этом не разбираюсь.
Поэтому прошу помощи здесь.
Ответ:
Сообщение от Igorsrt
К сожалению, не хватает "тяму" разобраться.. (( Вот если бы была ссылка на конкретный пример подобной реализации
Скиньте Ваш код, возможно, Вы просто не запретили переход по ссылке в JS скрипте.
Вопрос: Функция обработки формы

Добрый день.
Подскажите, можно ли в форму html в action записать имя фунции javascript для обработки формы?
Ответ: Можно сделать вот так:
PHPHTML
1
2
3
<form name="UserEnter"  action="index.php" method="POST" onsubmit="my_function()">
или вместо кнопки submit создать:
<input type="button" value="Отправить" onclick="my_function()" />