POST数据以JSON格式

我有一些数据需要转换为JSON格式,然后用JavaScript函数进行POST。

<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> 

这就是现在这个post的样子。 我需要它提交JSON格式的值,并使用JavaScript进行POST。

不知道你是否想要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 }; }; 

这里是一个使用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函数创build一个Javascript对象的forms值。 然后你可以使用JSON.stringify把它转换成一个string,如果需要的话。 你也可以卸下你的身体。

另一个例子在这里可用:

发送一个JSON到服务器,并返回一个JSON,没有JQuery

与jans的答案相同,但也通过在XMLHttpRequest上设置onreadystatechangecallback来检查服务器响应。

使用新的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)); 就像Jan的原始答案一样。