2012-10-08 124 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 
    } 
); 

這是一個有點棘手,可能不是一個很好的做法。你怎麼看待這件事 ?