Задать вопрос

Ajax — первый раз приходит Get, потом Post?

jquery-1.11.1
js/sitescripts.js
jQuery('.form form').on('submit', function(e){
        e.preventDefault();
	var corretform = true;
	jQuery('.S-m2, .form-name, .form-phone, .form-e-mail').each(function(){
		jQuery(this).removeAttr('style');
		if ( jQuery(this).val() == '' ) {
			jQuery(this).css('border-color','red');
			corretform = false;
		}
	});
	if ( corretform ) {
		jQuery.ajax({
			url: "/admin/ajax/askprice.php",
			type: "POST",
			data: ({post : jQuery('#askprice').serialize()}),
			success: function(data){
				jQuery(".form-wr div").html(data);
			}
		});
	}
	return false;
});


форма

<form action="#" method="post" id="askprice">
			<div class="block1 clearfix">
				<div class="kind">
					<p>Тип помещения<span class="star">*</span></p>
					<label><input type="radio" checked="checked" name="kind" value="Офис"/>Офис</label>
					<label><input type="radio" name="kind" value="Конференц-зал"/>Конференц-зал</label>
				</div>
				<div class="sm2">
					<p>Необходимая площадь (м<sup>2</sup>)<span class="star">*</span></p>
					<label><input type="text" name="square" class="S-m2" /></label>
				</div>
				<div class="ask">
					<p>Как Вы о нас узнали?</p>
					<select name="ask">
						<label><option value="Интернет" >Интернет</option></label>
						<label><option value="Наружная реклама" >Наружная реклама</option></label>
						<label><option value="Рекомендации" >Рекомендации</option></label>
						<label><option value="Пресса" >Пресса</option></label>
						<label><option value="Прочее" >Прочее</option></label>
					</select>
				</div>
			</div>
			<div class="block2 clearfix">
				<div class="kontakts">
					<p>Контакты<span class="star">*</span></p>
					<label><input type="text" placeholder="Имя" name="name" class="form-name" /></label>
					<label><input type="text" placeholder="Телефон" name="phone" class="form-phone" /></label>
					<label><input type="text" placeholder="E-mail" name="email" class="form-e-mail" /></label>
				</div>
				<div class="komment">
					<p>Комментарий</p>
					<label><textarea name="komment"></textarea></label>
				</div>
			</div>
			<input id="sacaptcha_error" type="hidden" value="Обязательное поле.">
			<input id="sacorrect_error" type="hidden" value="Исправьте ошибки заполнения формы.">
			<div class="send-button">
				<input type="submit" value="Отправить" >
			</div>
		</form>


admin/ajax/askprice.php
$method = $_SERVER['REQUEST_METHOD'];
    echo '<pre>'; print_r($method); echo '</pre>';

Отправляю данные с формы, с первого раза данные передаются через GET, второй раз пробую - через POST. Если очистить весь кеш браузера, то данные опять передаются сначала через GET. Нужно только через Post

и когда отправляется через get то передается по такому url - admin/ajax/askprice.php?attempt=1 Добавляется attempt=1 и загружается чистый лист
  • Вопрос задан
  • 150 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
dvs365
@dvs365 Автор вопроса
yii2
Перенес файл askprice.php в корень сайта и изменил url: "/askprice.php" , прошлый url ajax понимал только со второго раза. Проблема появилась не так давно, раньше все работало целых пять лет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@vardoLP
Ват ю сэй эбаут май мама?!
а сам обработчик где? askprice.php
Ответ написан
@kudis
Bitrix developer
Повторить Ваш кейс не удалось, возможно GET у Вас отправляется ещё какой-нибудь "магией")))
Однако:
1. Как правильно указал slo_nik, нужно сделать
jQuery('.form form').on('submit', function(e){
 e.preventDefault();

2. Убрать вот эту беду
jQuery('.S-m2, .form-name, .form-phone, .form-e-mail')
и применить аттрибут required
с ним лаконичнее:
jQuery(':required')
3. Не пихать данные в виде строки jQuery('#askprice').serialize(),
которая на старых версиях jquery с дефолтным флагом processData=true добивается в строку запроса, что, возможно, для Вашего сервера может выглядить как GET.
Используйте
...
data: new FormData(document.querySelector('#askprice')),
...

4. Почитате про типы tel и email для Ваших инпутов
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы