通过AJAX请求提交表单

时间:2011-11-16 18:48:06

标签: backbone.js

根据表单中输入的数据,从RESTful Web服务检索数据的主干约定/最佳实践是什么?

根据我的理解,我可以在视图中注册点击观察者,因此当点击表单提交按钮时,视图将从表单中检索数据。但我不清楚我是否从视图模型路由器执行AJAX调用。

基本上,我不清楚以下哪项是惯例:

  1. 视图获取参数,执行AJAX调用,然后将返回的JSON传递给模型
  2. 视图获取参数并将其传递给模型并让它执行AJAX调用并从Web服务检索数据
  3. 视图获取参数并将它们传递给路由器并让它执行AJAX调用并相应地填充相应的模型和视图?
  4. 注意:我需要向RESTful Web服务提交搜索条件,该服务期望数据被POST;如果我错了,请纠正我,但似乎我不能使用:fetchsave。我应该在模型中创建一个使用$ .ajax({...})来发布参数并接收JSON数据的函数吗?

2 个答案:

答案 0 :(得分:9)

backbone.js模型已经设置为执行RESTful请求。方法2就是你想要做的。

您必须在模型中设置的唯一内容是URL:

MyModel = Backbone.Model.extend({
    url: 'http://path/to/my/RESTful/service'
});

MyView = Backbone.View.extend({
   events: {
       'submit #myform': 'saveToModel'
   },

   initialize: function() {
       // ...
   },

   saveToModel: function() {
       // this triggers a RESTFul POST (or PUT) request to the URL specified in the model
       this.model.save({
          'foo': 'Foo!',
          'bar': 'Bar!'
       });
   }


});

答案 1 :(得分:0)

将提交事件绑定到表单ID或div id,而不是按钮ID。