2013-10-30 53 views
1

我有一個這樣的後端應用程序吐痰JSON數據:localStorage的不存儲JSON的弦對象Array

[{"id":1,"line_number":"604"},{"id":2,"line_number":"610"}] 

我的移動應用是存儲使用本地存儲該數組作爲字符串,在Jquery的-Mobile的mobileinit功能:

localStorage.variable = getBusesList(); 

反過來,這功能,執行以下操作:

function getBusesList(){ 
    var busesJSONArray = []; 
    $.getJSON('someURL', function(data){ 
    $.each(data, function(key, value){ 
     busesJSONArray.push({ id: value.id, line_number: value.line_number }); 
    }); 
    }); 
    var JSONObject = { 
    buses: busesJSONArray 
    }; 

    alert("busesJSONArray :" + busesJSONArray); 
    alert(" getBusesList Done: " + JSON.stringify(JSONObject)); 
    return JSON.stringify(JSONObject); 
} 

getJSON函數正常工作。問題不應該在那裏。 它應該返回一個包含對象數組的字符串。如果我直接在瀏覽器控制檯中輸入命令,這將起作用。但是如果運行移動應用程序,第一個警報具有:「busesJSONArray:」,第二個具有:「getBusesList完成:{」buses「:[]}」。

實際上:

>localStorage.buses 
"{"buses":[]}" 

這很奇怪。任何暗示的事情將不勝感激。 謝謝!

回答

2

您使用的是異步的$.getJSON,只有回調函數中的代碼將具有從URL檢索到的信息。

此代碼:

var JSONObject = { 
    buses: busesJSONArray 
}; 

alert("busesJSONArray :" + busesJSONArray); 
alert(" getBusesList Done: " + JSON.stringify(JSONObject)); 
return JSON.stringify(JSONObject); 

不會有這是在$.getJSON呼叫恢復的信息,所以它不會做你期望什麼,你需要重新修改你的邏輯回調裏面工作。

它在控制檯中工作,因爲您在輸入其他命令之前等待異步調用完成。

+0

工程就像一個魅力! – Sebastialonso

相關問題