idclev31
@idclev31
Местный дурачек

Почему POST параметры ajax запроса не приходят к серверу?

При отправке данных на сервер AJAX методом JQuery с типом POST
function site_register() {
	var str = $("#register_user").serialize();
	loading_show();
	$.ajax({
			method:"POST",
			type: "POST",
			url: "/?action=register&do=auth",
			data:str,
		 	success: function (data) {
				loading_hide();
				if ( data == 'error' ) return false;
				eval(data);
				captcha_update();
			}
	});

данные на сервер не приходят.
Если же меняем на GET, то все ок.
Подскажите, пожалуйста, в чем может быть проблема?
Задачу решил заменой конструкции выше на
$.post("?action=register&do=auth", str, function (data) {
			loading_hide();
			if ( data == 'error' ) return false;
			eval(data);
			captcha_update();
	});
  • Вопрос задан
  • 6499 просмотров
Решения вопроса 1
@forevist
Front-End Developer
как писали уже выше, в data необходимо передавать объект.
А jQuery.serialize() делает GET-параметры, от того GET запрос в вашем примере прекрасно отработает.

Если вам лень разбираться что и как, предлагаю такой код:
var str = $("#register_user").serialize();
var temp = str.split('&');
var request = {};
for (var i = 0; i < temp.length; i++) {
  var pieceRequest = temp[i].split('=');
  request[pieceRequest[0]] = pieceRequest[1];
}

и в ваш аякс запрос data передавать request вместо str
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
artem90
@artem90
TeamLead, Developer
1. Проверьте в chrome dev tools, что данные у Вас действительно уходят
955f33c68f2a47649e66c1724351c2c9.png
2. Если уходят, проверьте редиректы на сервере, возможно, срабатывает какая-либо валидация и отправляет этот запрос редиректом куда-либо.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы