【问题标题】:knockout.js save form to jsonknockout.js 将表单保存到 json
【发布时间】:2013-05-08 20:14:03
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery knockout.js knockout-mapping-plugin


    【解决方案1】:

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

    我还建议阅读此post

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

       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);
        });
    

    【讨论】:

    • 我正在使用 ko.mapping.toJSON。这样我就可以使用 knockout.js 映射插件自动映射。
    • 您的后端接收表单是什么?因为这真的取决于你应该如何发送它。您有多种选择
    猜你喜欢
    • 2015-02-06
    • 1970-01-01
    • 2012-06-08
    • 2016-12-22
    • 2014-11-16
    • 1970-01-01
    • 2019-01-08
    • 2014-11-30
    • 2023-04-01
    相关资源
    最近更新 更多