2013-07-04 61 views
2

我有一个骨干应用程序。 在这个应用程序中,我获取存储在我的服务器中的json。 由于某种原因,现在我不想从文件中获取json,而是从数组(与Json相同的结构)通过PHP获取json。 何我可以改变我的代码做同样的事情吗? 这是我的应用程序骨干获取对象

var CombinationView = Backbone.View.extend({ 
    template: _.template($("#hotel-list-template").html()), 
    initialize: function(){ 
     this.list = new HotelCollection([], { 
      url: 'includes/list.json' 
     }); 

     this.list.on("sync", this.listLoaded, this); 

     this.list.fetch(); 
    }, 
    render: function(){ 
     this.$el.html('Loading...'); 
     return this; 
    }, 
    listLoaded: function(){ 
     //code 
    } 
}); 

,我已经存入PHP是$list_object

我怎样才能改变我的代码来获取对象,而不是一个URL的变种?

+0

你可不只是json编码你的PHP数组并将其作为json返回给js,然后它可以像平常一样对它进行jsondecode并处理它 – Dave

+0

我的数组是jsonencode(),但是如何放入这个应用程序而不是从外部文件?你可以给我一个这样的结构的例子吗? –

+0

从一个文件中提取只是你的服务器提供静态文件,这与去一个url并且你的服务器发送一个JSON对象是一样的。 – Loamhoof

回答

2

那么你不能从JavaScript访问PHP变量。获取一些信息后,PHP方面已经完成了它的工作。有两种方法可以做你想做的事情。

创建集合:http://backbonejs.org/#Collection

收集将获取对象作为JSON的列表。每个对象将被传递给Model类。这样,您可以获取对象列表,并从此列表中创建新模型。由于模型不会使用同步获取。应该触发一个change事件。

您可以做的另一件事是获取特定的对象。当指定一个对象时,它会向PHP服务器发送一个ID。使用此ID,您可以加载列表中的特定元素并将其解析为JSON。

同样,从JS,你只能从服务器或流获取文件。 Websocket是在JavaScript中获得长寿命全双工套接字的唯一方法。