在本地获取一个json文件(jquerymobile& phonegap)

时间:2012-10-08 14:59:59

标签: cordova jquery-mobile localhost getjson

我想知道是否可以获取本地的json文件? 如果有,怎么样?

我试过

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

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

我正在使用wampserver。

4 个答案:

答案 0 :(得分: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;
        });

crossDomain参数用于在同一域上强制执行跨域请求(JSONP)。我还强制回调函数名称为cb。另请注意,JSONP请求不支持同步操作。

然后你必须使用你的回调函数包装你的JSON数据:

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

这有点棘手,可能不是一个很好的做法。你觉得怎么样?

答案 1 :(得分:0)

尝试使用环回地址,而不是localhost,如下所示:

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:-2)

尝试文件格式:

file:///C:/folderA/test.html

http://www.cs.tut.fi/~jkorpela/fileurl.html