[英]Cannot read length property error in jsonstore in Mobilefirst platform
我是javascript和MobileFirst的新手。 我試圖讀取json值列表:
[{"_id":1,"json":{"age":10,"name":"carlos"}},{"_id":2,"json":{"age":10,"name":"carlos"}}]
並在DOM中輸出值。 它失敗並輸出以下錯誤:
03-27 04:29:19.035:E / NONE(3093):未捕獲的異常:未捕獲的語法錯誤:(compiled_code):311的意外令牌o
這是函數:
function add(){
var collectionName = 'people';
// Object that defines all the collections.
var collections = {
// Object that defines the 'people' collection.
people : {
// Object that defines the Search Fields for the 'people' collection.
searchFields : {name: 'string', age: 'integer'}
}
};
// Optional options object.
var options = {
};
WL.JSONStore.init(collections, options)
.then(function () {
// Data to add, you probably want to get
// this data from a network call (e.g. Worklight Adapter).
var data = [{name: 'carlos', age: 10}];
// Optional options for add.
var addOptions = {
// Mark data as dirty (true = yes, false = no), default true.
markDirty: true
};
// Get an accessor to the people collection and add data.
return WL.JSONStore.get(collectionName).add(data, addOptions);
})
.then(function (numberOfDocumentsAdded) {
// Add was successful.
alert("Data successfully added.");
})
.fail(function (errorObject) {
alert("Data failed to be added.");
});
}
function display(){
var collectionName = 'people';
var options = {
};
WL.JSONStore.get(collectionName)
.findAll()
.then(function (arrayResults) {
// arrayResults = [{_id: 1, json: {name: 'carlos', age: 99}}]
var arrayResult = '{"files":' + arrayResults + '}';
alert(arrayResults.length);
var jsonData = JSON.parse(arrayResult);
alert (jsonData.files.length);
alert(jsonData);
var full_list = "";
for (var i = 0; i < jsonData.files.length; i++) {
var file = jsonData.files[i];
full_list = full_list + file.json.name + " " + file._id + " is " + file.json.age + '<br />';
$("#demo").append(full_list);
}
})
.fail(function (errorObject) {
// Handle failure.
});
}
index.html
<a href="#" onclick="display();" >click here to display the data</a>
<br />
<a href="#" onclick="deldocument();" >click here to delete the data</a>
<p id="demo"></p> <br />
<a href="#" onclick="destroy();" >click here to destroy the data</a>
<p id="demo"></p> <br />
如果能得到幫助,我將不勝感激。 謝謝你們
如果您對一個對象進行JSON.parse ,則拋出"Unexpected token o"
原因很簡單,因為它試圖解析obj_to_parse.toString() ,即[object Object]
。 嘗試JSON.parse('[object Object]')
。
這是您的結果:
//arrayResults = [{_id: 1, json: {name: 'carlos', age: 99}}]
嘗試這樣閱讀:
var full_list="";
for(var i=0;i<arrayResults.length;i++){
// alert(arrayResults[i]._id);
// alert(arrayResults[i].json.name);
// alert(arrayResults[i].json.age);
full_list = full_list + arrayResults[i].json.name + " " + arrayResults[i]._id + " is " + arrayResults[i].json.age + '<br />';
$("#demo").append(full_list);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.