2012-10-08 80 views
0

我想知道是否有可能获得本地的json文件? 如果是,如何?在本地获取json文件(jquerymobile&phonegap)

我已经试过

function test() { 
$.getJSON("c\\file.json", function(json) { 
    console.log(json); 
}); 
} 

function test() { 
     $.getJSON("http://localhost/file.json", function(json) { 
     console.log(json); 
     }); 
    } 

我使用wampserver。

回答

0

尝试使用回送地址,而不是本地主机,像这样:

$.getJSON("http://127.0.0.1/file.json", function(json) { 
+0

我试过'file:/// C:/ file.json'和'file:// localhost/file.json'并且'http:// 127.0.0.1/file.json' 但是没有任何效果。 – user1728824

+0

确保你的document_root的根目录下有你的file.json文件(即你的网站所在的根文件夹) – Nelson

+0

我的文件位于正确的文件夹中。我在日志中有一个错误,我不明白'未知的铬错误:-6' – user1728824

0

为了更好的编程,使用加载JSON文件的相对路径。

$.getJSON("file.json", function(json) { 
    console.log(json); 
}); 
3

我刚找到一个方式来加载,而无需使用Phonegap File API本地存储的JSON文件。这对于Cordova 2.7.0来说非常简单并且很适合我(我只在Android设备上测试过):我使用jQuery.ajax()来伪造一个JSONP请求。所以,你的Ajax调用看起来像这样:

 $.ajax({ 
      url: 'data.json', 
      crossDomain: true, 
      jsonpCallback: 'cb', 
      dataType: 'jsonp', 
     }) 
      .fail(function (jqXHR, textStatus, errorThrown) { console.log(textStatus, errorThrown); alert('Failed to load data.'); }) 
      .done(function (data) { 
       app.data = data; 
     }); 

跨域参数是强制在同一域中的跨域请求(JSONP)。我也强制回调函数名称为cb。另请注意,JSONP请求不支持同步操作。

然后你有这样的回调函数来包装你的JSON数据:

cb(
    { 
     "title": "the title, 
     "id": 1 
    } 
); 

这是一个有点棘手,可能不是一个很好的做法。你怎么看待这件事 ?