Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Почему не работает POST через AJAX / 7 сообщений из 7, страница 1 из 1
28.06.2016, 15:58
    #39263974
maxapet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает POST через AJAX
Есть такая форма:
Код: html
1.
2.
3.
4.
5.
6.
7.
<form id="settingsFrm" name="settingsFrm" method="POST" action="saveSettings.php">
	<input type="hidden" name="tHeaderText" value="New Title" />
	<input type="hidden" name="cHeaderText" value="" />
	<input type="hidden" name="cHeaderBackground" value="" />
	<input type="hidden" name="tTitle" value="Title" />
	<input type="submit" value="Сохранить настройки" />
</form>


Передаю её через AJAX вот так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
$("#settingsFrm").on("submit", function(eo){
	var $that = $(this);
	var $formData = new FormData($that.get(0));
	alert($that.attr("method"));
	$.ajax({
		url: $that.attr("action"),
		type: $that.attr("method"),
		contentType: "application/x-www-form-urlencoded",
		processData: true,
		data: $formData,
		dataType: "text", //"json",
		success: function(data) {
			alert(data);
		},
		error: function(xhr, textStatus, errorThrown) {
			alert("Ошибка!" + "\n" + xhr + "\n" + xhr.status);// + "\n" + xhr.responseText);
		}
	});
	eo.preventDefault();
});


saveSettings.php имеет такой вид:
Код: php
1.
2.
3.
4.
5.
6.
7.
<?
	if(!empty($_POST[tHeaderText]))
		echo $_POST[tHeaderText];
	else
		echo "Ошибка";
	exit;
?>


И получаю сообщение "Ошибка". Если processData=true, то php отрабатывает правильно, но при этом происходит переход на страницу saveSettings.php, а возврата на страницу с которой отправляю данные не происходит.
В чём может быть дело?
...
Рейтинг: 0 / 0
28.06.2016, 16:30
    #39263999
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает POST через AJAX
maxapet,
Это ты привел реальный пример?
...
Рейтинг: 0 / 0
28.06.2016, 16:51
    #39264012
maxapet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает POST через AJAX
HunterNomad, да, куски кода из реального примера.
Самое интересное, что другая форма, отправляющая картинку на сайт таким же способом, прекрасно работает на этой же странице.
...
Рейтинг: 0 / 0
28.06.2016, 18:40
    #39264127
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает POST через AJAX
как оттестировать проблему:
1. Посмотреть что отправилось на сервер (делается через отладчик в браузере). Сравнить с ожидаемой отправкой
2. Посмотреть значение переменной $_POST перед использованием. Сравнить с ожидаемым значением

После этого уточнить вопрос (или перейти к следующему шагу по локализации проблемы)

Сейчас всё, что тут написано, не позволяет лично мне определить проблему (или даже предположить где она может быть)
...
Рейтинг: 0 / 0
28.06.2016, 18:43
    #39264131
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает POST через AJAX
maxapet,

P.S. Не забывай строки в php оборачивать в кавычки. Интерпретатор это делает за тебя, но будет очень интересная ситуация, когда у тебя реально появится константа с таким именем. Будет большой сюрприз, который очень сложно отловить.
...
Рейтинг: 0 / 0
28.06.2016, 19:09
    #39264144
maxapet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает POST через AJAX
Програмёр, спасибо, попробую. И замечание учту. :-)
...
Рейтинг: 0 / 0
29.06.2016, 05:58
    #39264362
maxapet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает POST через AJAX
Работает вот такой вариант отправки:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
$("#settingsFrm").on("submit", function(eo){
	var $that = $(this);
	var $formData = new FormData($that.get(0));
	alert($that.attr("method"));
	$.ajax({
		url: $that.attr("action"),
		type: $that.attr("method"),
		contentType: false,
		processData: false,
		data: $formData,
		dataType: "text", //"json",
		success: function(data) {
			alert(data);
		},
		error: function(xhr, textStatus, errorThrown) {
			alert("Ошибка!" + "\n" + xhr + "\n" + xhr.status);// + "\n" + xhr.responseText);
		}
	});
	eo.preventDefault();
});
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Почему не работает POST через AJAX / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]