2013-05-08 123 views
2

我使用knockout.js和映射插件映射了我的表单。我准备将表单保存为json并将其发送回服务器。这是我第一次这样做,那么最简单的方法是什么?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> 

回答

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

我使用ko.mapping.toJSON。这样我就可以使用knockout.js映射插件自动进行映射。 – simple 2013-05-08 21:03:11

+0

请举个例子,假设我什么都不知道。 – simple 2013-05-08 21:37:20

+0

你的后台接收表单是什么?因为它确实取决于你应该如何发送它。您在这里有多个选项 – 2014-05-28 16:48:25