2

我使用 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>
4

1 回答 1

1

要将您的视图模型序列化回 JSON,请使用ko.toJSON(myViewModel)

我还建议阅读这篇文章

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

   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);
    });
于 2013-05-08T20:31:04.640 回答