使用Backbone.js与服务器通信

use*_*880 2 javascript php backbone.js

我是第一次潜入Backbone的新手网络开发人员.我一直在努力解决的一个主要问题(实际上花费了大量的过去两天研究无济于事)是Backbone如何与服务器进行通信.

在我之前的项目中,我已经能够使用PHP和jQuery的$.getJSON方法从我的数据库中获取数据.当我使用Backbone(例如myCollection.url = "todos.php")时,我也能够这样做.然而,在每一个教程,文档,示例代码,我看了看,对收集的URL总是被设置为一个目录和urlRoot是目录/ ID(前.myCollection.url = "/todos"myModel.urlRoot = "/todos/5".

我的问题是这是如何管理的?通过向我的调用添加GET参数,它似乎比我传统的方式更清晰.起初我以为这是路由,但这似乎只与设置浏览器历史记录和内容有关.我看过的一些源代码使用的是SLIM PHP和Rails(我都没用过),但我不知道任何部分是如何组合在一起的.

Jas*_* Xu 5

Backbone有自己的api用于与服务器通信,例如fetch,save,destory.实际上,这些方法与jQuery的$ .ajax做同样的事情.例如,您以这种方式使用backbone的fetch:

var UserModel = Backbone.Model.extend({     
    url : "rootURL/user",
});
var user = new UserModel;
user.fetch(
    data:{
        userId : 1,          //the webservice will be: rootURL/user?userId=1  GET;
    }
    success:function(model, response, options){
        //callback
    },
    error:function(model, response, options){
        //callback
    },
);
Run Code Online (Sandbox Code Playgroud)

但是您也可以使用与jQuery中相同的方式与骨干应用程序中的服务器进行通信.例如:

var UserView = Backbone.View.extend({
    render: function(){
        //do something
    }
    getUser: function(userId){     
        $.get("rootURL/user", 
             { userId : userId},
             success:function(data){
                 //callback
             }
          );
    }
});
Run Code Online (Sandbox Code Playgroud)