2011-06-03 31 views
4

我有這段代碼用於加載存儲在phonegap(iPhone)項目的相同目錄(通常在「www」文件夾)中的json文件,我怎樣才能達到「routes.json」?我的項目有此樹的文件夾:如何使用phonegap中的ajax調用來訪問本地文件?

__www/

_ _ _index.html

_ _ _index.json(其中位於該代碼)

_ _ _routes.json *

store: new Ext.data.Store({ 
        model : 'routes', 
         proxy: { 
          type: 'ajax', 
            url : 'file://??????/www/routes.json', 
          reader: { 
           type: 'json' 
         } 
        }, 
        autoLoad: true 
       }) 
+0

您應該可以使用'url:routes.json' - 如果json文件與主Javascript文件在同一個文件夾中。 – YDL 2011-06-03 09:51:38

+0

這是我第一次嘗試,沒有結果。事實上,應用程序顯示總是加載微調沒有加載任何東西... – USSliberty 2011-06-03 10:37:10

+0

你可以發佈你的JSON文件的一部分? – YDL 2011-06-03 11:20:58

回答

1

我認爲這是Sencha Touch Ext.data.Proxy實現中的一個錯誤。我花了幾個小時試圖完成這項工作,但沒有成功。我花了不到5分鐘的時間使用jQuery來實現它。

//Initialize the Store 
new Ext.data.Store(
    { 
    model: "Routes", 
    storeId: "Routes", 
    //The Proxy isn't used but it is a required configuration option 
    proxy: { 
     type: 'ajax' 
    } 
}); 

//Populate the store using jQuery.get() 
$.get('routes.json', 
     function(data, status, jqXHR) { 
     if(status == "success") { 
      var store = Ext.StoreMgr.get('Routes'); 
      store.loadData(data); 
     } 
     }); 
2

Treat P honeGap的www目錄就像你會在你的服務器上的目錄。您可以根據需要創建任意數量的子文件夾,並且可以使用相對鏈接引用文件。

正如YDL提到的,如果你想訪問index.json和它駐留在WWW文件夾的根目錄中,你可以使用:index.json。再例如,如果您有一個名爲數據的子文件夾,它包含了所有的json文件,您可以使用:data/index.json

+0

但我有在PhoneGap的應用程序不是一個服務器。所以它需要絕對路徑......儘管...在您打開PC上的html文件時是相同的行爲,實際上在地址欄中顯示了完整路徑。 – USSliberty 2011-06-03 16:40:23

+1

當您在PC上打開HTML文件時,地址欄顯示文件位置的完整路徑是正確的。但是,您仍然可以在HTML文件中擁有相關的鏈接/路徑,並且它們仍然可以正常工作。 PhoneGap ** www **文件夾也是如此。您的PG項目中應該使用相對路徑,而不是絕對路徑。 – avoision 2011-06-03 17:04:32

+0

我試過這個結果相同....我也試過「./routes.json".....但沒有...我雖然相關的路徑只能在HTML文件中工作... – USSliberty 2011-06-04 10:49:31

相關問題