2011-06-03 51 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

相关问题