2013-07-04 64 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中獲得長壽命全雙工套接字的唯一方法。