[英]JSON.parse returning string instead of Array
我有一個javascript數組,我將其字符串化,以便將其存儲在localstorage中
console.log(request.keywords.length);
localStorage.keywords = JSON.stringify(request.keywords);
其中關鍵字是javascript數組。 這里request.keywords.length
返回12,這是數組中元素的數量。
檢索它並將其解析回JSON之后
var keywords = chrome.extension.getBackgroundPage().getItem("keywords");
var kjos=JSON.parse(keywords);
console.log(kjos.length);
返回的長度是342,這是整個字符串的長度。 我嘗試通過constructor.name屬性獲取對象類型,它給我string
而不是Array
。
出了什么問題?
Snippets: Background.html
function getItem(key) {
var value;
log('Get Item:' + key);
try {
value = window.localStorage.getItem(key);
}catch(e) {
log("Error inside getItem() for key:" + key);
log(e);
value = "null";
}
log("Returning value: " + value);
return value;
}
/////
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
localStorage.keywords = JSON.stringify(request.keywords);
}
);
//////////// Popup.js
var keywords = chrome.extension.getBackgroundPage().getItem("keywords");
var kjos=JSON.parse(keywords); //kjos is a string variable
///// keywords.js
//keywordsArray is an Array object
// Message passing to background page
chrome.extension.sendRequest({message: "setKeywords", keywords: keywordsArray}, function()
{
console.log(keywordsArray);
console.log("message sent");
// The data has been sent, we can close the window now.
//window.close();
});
你需要使用這樣的請求 - chrome.extension.sendRequest({message: "setKeywords"...
,但是對於getKeywords
操作。函數getItem
不能用於訪問后台頁面的變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.