将表单保存为json

knockout.js save form to json

本文关键字:json 保存 表单      更新时间:2023-09-26

我有我的表单映射使用knockout.js和映射插件。我准备将表单保存为json并将其发送回服务器。这是我第一次做这个,最简单的方法是什么?

到目前为止我写的是:

// Here's my data model
var viewModel;
$.getJSON('/myJSONdata', function (data) {
    viewModel = ko.mapping.fromJS(data);
    ko.applyBindings(viewModel);
});
//convert mapped data to json format
var jsonData = ko.mapping.toJSON(viewModel);
// Do something to send the form data in json format back to the server on form submit

<form data-bind="submit: doSomething">
  <label for="typeOfIncident">Do you agree?</label>
  <label>
  <input type="radio" name="doYouAgree" value="Yes" data-bind="value: doYouAgree" checked>
  Yes
  </label>
  <label>
  <input type="radio" name="doYouAgree" value="No" data-bind="value: doYouAgree">
  No
  </label>
  <!-- submit button -->
  <button type="submit">Submit</button>
</form>

使用ko.toJSON(myViewModel)将视图模型序列化回JSON

我也推荐阅读这篇文章。

编辑:

我可能误解了你在这里想要什么,但是如果你想通过视图模型提交,你可以这样做:

   var viewModel;
   $.getJSON('/myJSONdata', function (data) {
      viewModel = ko.mapping.fromJS(data);
      viewModel.doSomething = function(){
        var jsonData = ko.mapping.toJSON(viewModel);   
        $.ajax({
           type: "POST",
           url: '/myJSONdata',
           data: jsonData
        });
      };
      ko.applyBindings(viewModel);
    });