powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Почему не работает POST через AJAX
7 сообщений из 7, страница 1 из 1
Почему не работает POST через AJAX
    #39263974
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая форма:
Код: 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
Почему не работает POST через AJAX
    #39263999
HunterNomad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxapet,
Это ты привел реальный пример?
...
Рейтинг: 0 / 0
Почему не работает POST через AJAX
    #39264012
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HunterNomad, да, куски кода из реального примера.
Самое интересное, что другая форма, отправляющая картинку на сайт таким же способом, прекрасно работает на этой же странице.
...
Рейтинг: 0 / 0
Почему не работает POST через AJAX
    #39264127
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как оттестировать проблему:
1. Посмотреть что отправилось на сервер (делается через отладчик в браузере). Сравнить с ожидаемой отправкой
2. Посмотреть значение переменной $_POST перед использованием. Сравнить с ожидаемым значением

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

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

P.S. Не забывай строки в php оборачивать в кавычки. Интерпретатор это делает за тебя, но будет очень интересная ситуация, когда у тебя реально появится константа с таким именем. Будет большой сюрприз, который очень сложно отловить.
...
Рейтинг: 0 / 0
Почему не работает POST через AJAX
    #39264144
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр, спасибо, попробую. И замечание учту. :-)
...
Рейтинг: 0 / 0
Почему не работает POST через AJAX
    #39264362
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работает вот такой вариант отправки:
Код: 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
7 сообщений из 7, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Почему не работает POST через AJAX
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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