如何将值从Backbone发送到CodeIgniter控制器

时间:2017-03-14 12:08:03

标签: javascript codeigniter backbone.js

我正在使用Backbone.js和CodeIgniter制作一个小型申请表,但我遇到了与控制器连接的问题。

有人可以为我提供完整的代码吗?

我的控制器名称是verfylogin。我已经从用户那里获取了用户名和密码,我必须将其传递给控制器​​。

$(function(){

        var Credentials = Backbone.Model.extend({});

        var LoginView = Backbone.View.extend({
          el: $("#login-form"),

          events: {
            "click #login": "login"
          },

          initialize: function(){
            var self = this;

            this.username = $("#username");
            this.password = $("#password");

            this.username.change(function(e){
              self.model.set({username: $(e.currentTarget).val()});
            });

            this.password.change(function(e){
              self.model.set({password: $(e.currentTarget).val()});
            });
          },

          login: function(){
            var username= this.model.get('username');
            var password = this.model.get('password');
            console.log(username,password);
          }
        });

        window.LoginView = new LoginView({model: new Credentials()});

1 个答案:

答案 0 :(得分:0)

首先,请read the Backbone documentation,查看示例并测试它们以真正了解它是如何工作的。另外,请查看Backbone.js tag wiki page

与API(后端)使用的内容无关,Backbone通过包含URL的REST API与后端进行通信。

要将Backbone模型与端点URL链接,请覆盖urlRoot property

var Credentials = Backbone.Model.extend({
    // Specify the endpoint URL here
    urlRoot: "api/endpoint" // relative
    // urlRoot: "http://example.com/api/endpoint" // or absolute
});

然后,使用Backbone view's events hash管理视图中的事件。避免手动绑定jQuery事件。

var LoginView = Backbone.View.extend({
    events: {
        "click #login": "login",
        "change #username": "onUsernameChange",
        "change #password": "onPasswordChange"
    },

    initialize: function() {
        // create the model here
        this.model = new Credentials();

        // cache jQuery object within the view
        this.$username = this.$("#username");
        this.$password = this.$("#password");
    },

    login: function() {
        // just call save to make a post request with the data.
        this.model.save();
    },

    onUsernameChange: function(e) {
        this.model.set({ username: this.$username.val() });
    },
    onPasswordChange: function(e) {
        this.model.set({ password: this.$password.val() });
    }
});

var loginView = new LoginView({ el: "#login-form" });

这样,事件回调中可以使用上下文(this)。避免对el属性进行硬编码,而更喜欢在初始化新视图实例时传递它。

处理发布到CodeIgniter控制器的JSON数据

由于我不使用CodeIgniter,我会将您推荐给其他资源。