Кажется, не может установить тип кодировки формы. (Javascript) - PullRequest
4 голосов
/ 11 ноября 2010

Я пытаюсь создать на лету созданную форму для отправки JSON с использованием типа кодировки "application/json".

в jQuery, я бы установил это как 'contentType' в $.ajax или $.post - однако по определенным причинам мне нужно делать это вручную.

У меня есть следующий код, но он просто не работает. По умолчанию энтип по-прежнему равен application/x-www-form-urlencoded

data = data;
var form = document.createElement("FORM");
form.style.display = "none";
form.action = url;
form.setAttribute('enctype', 'application/json');
form.method = "post";

Я пытаюсь установить неправильное свойство, или я просто устанавливаю его неправильно? Есть идеи?

Ответы [ 4 ]

4 голосов
/ 11 ноября 2010

Не уверен, что application / json 'поддерживается в качестве допустимого энктипа.В соответствии со спецификацией HTML401:

«Агенты пользователя W3C должны поддерживать перечисленные ниже типы контента (application / x-www-form-urlencoded, multipart / form-data). Поведение для других типов контента не определено».

http://www.w3.org/TR/html401/interact/forms.html#form-content-type

Так что я думаю, что поддержка этого зависит от поставщика браузера.

Если вы хотите имитировать работу jQuery и других библиотек javascript, тогда выВы будете использовать xmlhttp запрос для публикации ваших данных вместо использования элемента FORM, вам не нужно сообщать серверу, какой тип контента вы будете отправлять, когда будете это делать, сервер примет(правильно), что вы используете application / x-www-form-urlencoded.

2 голосов
/ 11 ноября 2010

Я не думаю, что form может это сделать.

Вам нужно будет сделать это на стороне сервера. Или, если вы должны сделать это на клиенте до отправки (не рекомендуется), тогда посмотрите на библиотеку JSON .

0 голосов
/ 26 мая 2014

Я считаю, что вы должны использовать

enctype = "multipart / form-data"

0 голосов
/ 11 ноября 2010

Вы должны проверить w3Schools ссылка .

form.enctype = enctype;

РЕДАКТИРОВАТЬ - я не заметил, что вы хотели, чтобы форма кодировала данные в JSON ... этого не произойдет. Либо используйте AJAX, либо обработайте его на стороне сервера и верните ответ в формате JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...