Javascript 使用Backbone.js将表单输入序列化为JSON
我正在开发RESTful应用程序——我在服务器端使用Java,在前端使用主干网。2将通过JSON进行通信 我的应用程序有很多表单,我想:Javascript 使用Backbone.js将表单输入序列化为JSON,javascript,jquery,json,backbone.js,serialization,Javascript,Jquery,Json,Backbone.js,Serialization,我正在开发RESTful应用程序——我在服务器端使用Java,在前端使用主干网。2将通过JSON进行通信 我的应用程序有很多表单,我想: 将表单输入序列化为JSON 将JSON发送到服务器 我的问题是: 将表单输入序列化为JSON的最佳方式是什么?也许是唯一的解决方案 一旦表单输入序列化为JavaScript对象,向服务器发送JSON的最佳方式是什么 到目前为止,我的代码是: Javascript和主干网 $(function(){ $.fn.serializeObject = func
$(function(){
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
//Model
var SignupForm = Backbone.Model.extend();
//View
var SignupView = Backbone.View.extend({
el: '.signupForm',
events: {
'click input.submit': 'getStatus'
},
getStatus: function(event){
var data = JSON.stringify($('form').serializeObject());
$('.test').html(data);
return false;
}
});
var signupForm = new SignupForm();
var signupView = new SignupView({
model: signupForm
});
});
HTML
<div class="signupForm">
<form class"signup">
<label for="name" >Name:</label>
<input type="text" id="name" name="name" />
<label for="surname" >Surname:</label>
<input type="text" id="surname" name="surname" />
<input type="submit" value="submit" class="submit" />
</form>
<div class="test"></div>
</div>
姓名:
姓:
我是个新手,如果这是小事,我很抱歉
我渴望以最好的方式编写我的应用程序,所以请随时告诉我是否有更好的方法来实现这一点
非常感谢。主干网不会对您如何实现行为做出任何假设。它只提供了一个干净的体系结构模式。因此,您实现表单序列化的方式似乎很好(类似于或改编自:) 就持久性而言,您可以在单击submit按钮时设置模型的属性 在你看来:
getStatus: function(event){
var data = JSON.stringify($('form').serializeObject());
this.model.set(data);
}
在您的模型中:
initialize: function(){
//This will save attributes every time a change event is triggered.
this.bind("change", this.save);
}
将表单输入序列化为JSON的最佳方式是什么?也许是
主干网唯一解决方案
用于将表单数据读入模型
例如:
var User = Backbone.Model.extend({
schema: {
title: { type: 'Select', options: ['Mr', 'Mrs', 'Ms'] },
name: 'Text',
email: { validators: ['required', 'email'] },
birthday: 'Date',
password: 'Password',
address: { type: 'NestedModel', model: Address },
notes: { type: 'List', listType: 'Text' }
}
});
var user = new User();
var form = new Backbone.Form({
model: user
}).render();
$('body').append(form.el);
一旦表单输入序列化为JavaScript对象,那么
将JSON发送到服务器的最佳方式
之后,您可以将模型与REST服务同步。您必须在模型上设置url属性,并调用save方法。对于仅序列化为JSON,也有此选项
另一个解决方案是使用扩展,它允许您以实体创建表单的相同方式提交表单:
Backbone.View.extend({
events: {
"submit form": "formSubmitted"
},
formSubmitted: function(e){
e.preventDefault();
var data = Backbone.Syphon.serialize(this);
this.model.set(data);
this.model.save();
}
});
您可以使用
this.model.save(数据),而不是绑定到模型上的“change”事件
而不是此.model.set(数据)代码>。谢谢你的回答,这正是我想要的——倾听Rails关于表单命名的约定,很容易集成到任何后端解决方案中。非常有用的插件。。。谢谢你,囚犯