78

Tôi có một số dữ liệu mà tôi cần chuyển đổi sang định dạng JSON và sau đó POST nó bằng hàm 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>

Đây là cách bài viết bây giờ. Tôi cần nó gửi các giá trị ở định dạng JSON và thực hiện POST bằng JavaScript.

|
147

Không chắc chắn nếu bạn muốn 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
  };
};
|
30

Đây là một ví dụ sử dụng 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>

Hàm jQuery serializeArray tạo một đối tượng Javascript với các giá trị biểu mẫu. Sau đó, bạn có thể sử dụng JSON.opesify để chuyển đổi chuỗi đó thành một chuỗi, nếu cần. Và bạn cũng có thể loại bỏ cơ thể của bạn trên tải.

|
3

Một ví dụ khác có sẵn ở đây:

Gửi JSON đến máy chủ và lấy lại JSON mà không cần JQuery

Điều này giống như câu trả lời của jans, nhưng cũng kiểm tra phản hồi của máy chủ bằng cách đặt một cuộc gọi lại onreadystatechange trên XMLHttpRequest.

|
0

Sử dụng đối tượng FormData mới (và một số nội dung ES6 khác), bạn có thể làm điều này để biến toàn bộ biểu mẫu của mình thành json:

let data = {};
let formdata = new FormData(theform);
for (let tuple of formdata.entries()) data[tuple[0]] = tuple[1];

và sau đó xhr.send(JSON.stringify(data));giống như trong câu trả lời ban đầu của Jan.

|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.