Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.05.2020, 14:54
Аватар для nastya97core
Аспирант
Отправить личное сообщение для nastya97core Посмотреть профиль Найти все сообщения от nastya97core
 
Регистрация: 04.04.2020
Сообщений: 60

Что писать в request.send(), чтобы отправить Post?
Здравствуйте. Есть вот такой аналог ajax:
function sub(event){
event.preventDefault ? event.preventDefault() : event.returnValue = false;
var request = new XMLHttpRequest();
request.open('POST', 'file.php, true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
request.send(data);
}


Подскажите, чему должен быть равен data?

В jQuery я делала
data = new FormData(event.target);
, но сейчас так не работает, уходит пустой запрос. Ошибок никаких нет.

Если провести тоже самое в IE9, то вернётся ошибка "formData не определено"

В html у меня так:
<form enctype="multipart/form-data" method="post" id="form" onsubmit="sub(event)">
...
</form>
Ответить с цитированием
  #2 (permalink)  
Старый 23.05.2020, 15:05
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от nastya97core
но сейчас так не работает, уходит пустой запрос. Ошибок никаких нет.
Вообще-то уходит не пустой запрос!

Возможно вам проще будет отправлять так...
function sub(event){
	event.preventDefault();
	var request = new XMLHttpRequest();
	request.open('POST', 'file.php', true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
	request.send(new URLSearchParams(new FormData(event.target)));
}


Сообщение от nastya97core
Есть вот такой аналог ajax
Забудьте про этот неудачный термин, он вам не нужен — используйте «запрос» или «отправка данных»!
Ответить с цитированием
  #3 (permalink)  
Старый 23.05.2020, 15:40
Аватар для nastya97core
Аспирант
Отправить личное сообщение для nastya97core Посмотреть профиль Найти все сообщения от nastya97core
 
Регистрация: 04.04.2020
Сообщений: 60

Malleys,
я так поняла, что ошибка в
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');

ведь у меня multipart/form-data, а здесь applocation... я попыталась заместо этого написать multipart..., но мне вернулась ошибка:
Warning: Missing boundary in multipart/form-data POST data in Unknown on line 0
тогда я вовсе убрала эту строку и всё начало отправляться. Я просто не знаю, насколько эта строка вообще ценна? и если ценна, то что я должна там прописать?
Ответить с цитированием
  #4 (permalink)  
Старый 23.05.2020, 15:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

https://developer.mozilla.org/ru/doc...P/Methods/POST

multipart/form-data необходим при отправлении и файлов.
Ответить с цитированием
  #5 (permalink)  
Старый 23.05.2020, 15:48
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от nastya97core
'file.php
Ошибка, нет закрывающей кавычки.
Сообщение от nastya97core
application/x-www-form-urlencoded
Ошибка, у FormData контент в multipart/form-data и заголовок сам устанавливается.
Ответить с цитированием
  #6 (permalink)  
Старый 23.05.2020, 16:05
Аватар для nastya97core
Аспирант
Отправить личное сообщение для nastya97core Посмотреть профиль Найти все сообщения от nastya97core
 
Регистрация: 04.04.2020
Сообщений: 60

Rise,
не, она там была. просто случайно при копировании сюда, я её задела.

то есть в этой строчке нет никакого смысла? Нигде ничего не поломается если её не будет?
Ответить с цитированием
  #7 (permalink)  
Старый 23.05.2020, 16:10
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от nastya97core
насколько эта строка вообще ценна?
Ценна, она указывает серверу как декодировать тело запроса.
Ответить с цитированием
  #8 (permalink)  
Старый 23.05.2020, 16:28
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от nastya97core
то есть в этой строчке нет никакого смысла?
...
Сообщение от Rise
у FormData ... заголовок сам устанавливается.
Ответить с цитированием
  #9 (permalink)  
Старый 23.05.2020, 17:41
Аватар для nastya97core
Аспирант
Отправить личное сообщение для nastya97core Посмотреть профиль Найти все сообщения от nastya97core
 
Регистрация: 04.04.2020
Сообщений: 60

Сообщение от Rise Посмотреть сообщение
Ошибка, нет закрывающей кавычки.

Ошибка, у FormData контент в multipart/form-data и заголовок сам устанавливается.
блин... ну я поэтому и спрашиваю: для меня она получается не нужна, потому что у меня formData? было бы что-то другое, то я бы должна была туда что-то написать? верно?
Ответить с цитированием
  #10 (permalink)  
Старый 23.05.2020, 18:37
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от nastya97core
было бы что-то другое, то я бы должна была туда что-то написать?
Не должна, это зависит от body в .send(body). Например, если это объект URLSearchParams, как в посте 2, то установится в application/x-www-form-urlencoded автоматически. Если это строка, то установится в text/plain. Если это urlencoded-строка, то теперь ДОЛЖНА переопределить дефолт text/plain в application/x-www-form-urlencoded. Если это какой-нибудь объект Blob, то там тоже автоматически устанавливается по его значению. И так далее. Короче, если дефолтные значения по каким-то причинам не устраивают, то ДОЛЖНА переопределять через .setRequestHeader().

Последний раз редактировалось Rise, 23.05.2020 в 18:58.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
О фрилансе (Личный опыт) free Оффтопик 105 18.08.2011 17:02
Поюзайте хомячка Nanto Ваши сайты и скрипты 30 06.06.2011 22:16
Как (эффективно) изучать JavaScript? JSTalker Общие вопросы Javascript 33 23.12.2010 03:13
Разбираем AjaxOOP eai Общие вопросы Javascript 41 04.11.2010 23:37
Сторонние библиотеки - быть или не быть? IIIEPJIOK Оффтопик 64 21.03.2009 19:39