У меня есть некоторые данные, которые мне нужно преобразовать в формат JSON, а затем отправить их с помощью функции JavaScript.
<body onload="javascript:document.myform.submit()">
<form action="https://www.test.net/Services/RegistrationService.svc/InviteNewContact" method="post" name="myform">
<input name="firstName" value="harry" />
<input name="lastName" value="tester" />
<input name="toEmail" value="testtest@test.com" />
</form>
</body>
Так сейчас выглядит пост. Мне нужно отправить значения в формате JSON и выполнить POST с помощью JavaScript.
javascript
json
post
xmlhttprequest
Дамьян Павлица
источник
источник
{"firstName":"harry", "lastName":"tester", "toEmail":"testtest@test.com"}
?Ответы:
Не уверен, что вам нужен jQuery.
var form; form.onsubmit = function (e) { // stop the regular form submission e.preventDefault(); // collect the form data while iterating over the inputs var data = {}; for (var i = 0, ii = form.length; i < ii; ++i) { var input = form[i]; if (input.name) { data[input.name] = input.value; } } // construct an HTTP request var xhr = new XMLHttpRequest(); xhr.open(form.method, form.action, true); xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); // send the collected data as JSON xhr.send(JSON.stringify(data)); xhr.onloadend = function () { // done }; };
источник
"cmd":"<img src=0 onerror=alert(1)>"
нет%3Cimg+src%3D0+onerror%3Dalert%281%29%3E
JSON.stringify
отдачей.html form
notJSON.stringify
.Вот пример использования jQuery ...
<head> <title>Test</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script type="text/javascript" src="http://www.json.org/json2.js"></script> <script type="text/javascript"> $(function() { var frm = $(document.myform); var dat = JSON.stringify(frm.serializeArray()); alert("I am about to POST this:\n\n" + dat); $.post( frm.attr("action"), dat, function(data) { alert("Response: " + data); } ); }); </script> </head>
Функция jQuery serializeArray создает объект Javascript со значениями формы. Затем вы можете использовать JSON.stringify, чтобы преобразовать это в строку, если это необходимо. И вы тоже можете снять нагрузку со своего тела.
источник
Другой пример доступен здесь:
Отправка JSON на сервер и получение взамен JSON без JQuery
Это то же самое, что и ответ jans, но также проверяет ответ серверов, устанавливая обратный вызов onreadystatechange для XMLHttpRequest.
источник
Используя новый объект FormData (и другие вещи ES6), вы можете сделать это, чтобы превратить всю вашу форму в JSON:
let data = {}; let formdata = new FormData(theform); for (let tuple of formdata.entries()) data[tuple[0]] = tuple[1];
а затем, как
xhr.send(JSON.stringify(data));
и в исходном ответе Яна.источник