Итак, у меня есть HTML-форма:
<html>
<head><title>test</title></head>
<body>
<form action="myurl" method="POST" name="myForm">
<p><label for="first_name">First Name:</label>
<input type="text" name="first_name" id="fname"></p>
<p><label for="last_name">Last Name:</label>
<input type="text" name="last_name" id="lname"></p>
<input value="Submit" type="submit" onclick="submitform()">
</form>
</body>
</html>
Каким будет самый простой способ отправить данные этой формы в виде объекта JSON на мой сервер, когда пользователь нажимает кнопку «Отправить»?
ОБНОВЛЕНИЕ: я дошел до этого, но, похоже, это не работает:
<script type="text/javascript">
function submitform(){
alert("Sending Json");
var xhr = new XMLHttpRequest();
xhr.open(form.method, form.action, true);
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
var j = {
"first_name":"binchen",
"last_name":"heris",
};
xhr.send(JSON.stringify(j));
Что я делаю не так?
$.ajax
иserialize
в нем.Ответы:
Получить полные данные формы в виде массива и преобразовать их в json.
Вы можете использовать его позже в ajax. Или если вы не используете ajax; поместите его в скрытое текстовое поле и передайте на сервер. Если эти данные передаются в виде строки json через данные обычной формы, вам необходимо декодировать их с помощью json_decode . Затем вы получите все данные в виде массива.
источник
$.ajax
его очень легко передать эти данные.HTML не позволяет создавать JSON из данных формы.
Если вы действительно хотите обрабатывать это от клиента, вам придется прибегнуть к использованию JavaScript, чтобы:
Вам, вероятно, будет лучше придерживаться
application/x-www-form-urlencoded
данных и обрабатывать их на сервере, а не в JSON. В вашей форме нет сложной иерархии, которая выиграла бы от структуры данных JSON.Обновление в ответ на серьезную переписывание вопроса…
readystatechange
обработчика, поэтому вы ничего не делаете с ответомисточник
enctype='application/json'
в определение формы для создания данных JSON w3.org/TR/html-json-formsваш код в порядке, но никогда не выполняется, из-за кнопки отправки [type = "submit"] просто замените его на type = button
внутри вашего скрипта; форма не заявлена.
источник
Я опаздываю, но я должен сказать тем, кому нужен объект, использующий только html, способ есть. В некоторых серверных фреймворках, таких как PHP, вы можете написать следующий код:
Итак, нам нужно настроить имя входа как
object[property]
для полученного объекта. В приведенном выше примере мы получили данные в следующем формате JSON:источник
Вы можете попробовать что-то вроде:
источник