首先,我必须说,我已经检查了与我的问题相关的其他堆栈溢出问题,但事实证明它们都没有帮助我。这就是我发布这篇文章的原因。
我制作了这个小的phonegap/cordova应用程序,运行良好:
index.html:
<html>
<head>
<title>NFC tag ID reader</title>
</head>
<body style="font-size: 1.4em;">
<div class="app">
<div id="messageDiv"></div>
</div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript">
app.initialize();
</script>
</body>
</html>js/index.js:
var app = {
/*
Application constructor
*/
initialize: function() {
this.bindEvents();
console.log("Starting NFC Reader app");
},
/*
bind any events that are required on startup to listeners:
*/
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
/*
this runs when the device is ready for user interaction:
*/
onDeviceReady: function() {
nfc.addTagDiscoveredListener(
app.onNfc, // tag successfully scanned
function (status) { // listener successfully initialized
app.display("Bonjour, veuillez vous identifier.");
},
function (error) { // listener fails to initialize
app.display("NFC reader failed to initialize " +
JSON.stringify(error));
}
);
},
/*
displays tag ID from @nfcEvent in message div:
*/
onNfc: function(nfcEvent) {
var tag = nfcEvent.tag;
var nfcUid = nfc.bytesToHexString(tag.id);
var myDb = {
"048574220e2a80": {
"name": "name1",
"firstname": "fname1",
"societe": "agency1"
},
"04ddfd12872a80": {
"name": "name2",
"firstname": "fname2",
"societe": "agency2"
},
"04d0fd12872a80": {
"name": "name3",
"firstname": "fname3",
"societe": "agency3"
}
};
app.display(myDb[nfcUid].name + ' ' + myDb[nfcUid].firstname + ' travaille chez : ' + myDb[nfcUid].societe);
},
/*
appends @message to the message div:
*/
display: function(message) {
var label = document.createTextNode(message),
lineBreak = document.createElement("br");
messageDiv.appendChild(lineBreak); // add a line break
messageDiv.appendChild(label); // add the text
},
/*
clears the message div:
*/
clear: function() {
messageDiv.innerHTML = "";
}
}; // end of app有趣的是onNFC函数,它等待一个NFC标记,然后在屏幕上显示与该uid标记对应的人员的姓名(通过首先检查json数据库)。这样,数据不会存储在标记中,而是直接存储在json文件中。
我想要的是使用相同的结构,但是使用index.js文件之外的json文件。这就是我有问题的地方..。
我的index.html没有改变,我刚刚创建了一个db.json文件,如下所示:
{
"048574220e2a80": {
"name": "name1",
"firstname": "fname1",
"societe": "agency1"
},
"04ddfd12872a80": {
"name": "name2",
"firstname": "fname2",
"societe": "agency2"
},
"04d0fd12872a80": {
"name": "name3",
"firstname": "fname3",
"societe": "agency3"
}在我的/js/index.js文件中更改的是onNFC函数,但是我不知道如何访问db.json文件,然后像以前一样做同样的事情。我尝试了几种方法,比如使用jquery或使用JSON.parse,但都不适合我。
有什么想法吗,伙计们?
谢谢
发布于 2014-06-16 23:22:34
我也有同样的问题。要读取您的文件,请使用JSON.parse(string)。它会将您string数据转换为object。
发布于 2014-06-16 23:28:29
我对cordova了解不多,也不确定您到底想做什么,但您可以使用cordova api读取文件,如下所示:http://cordova.apache.org/docs/en/2.5.0/cordova_file_file.md.html
如果你正在阅读的是JSON,你可以将它的内容传递给JSON.parse函数,它会返回一个原生的javascrip对象。要注意json内容是有效的JSON,否则JSON.parse将失败。
发布于 2014-06-17 17:22:05
我不完全理解您的问题,但是下面的代码和注释可能会对您有所帮助。
var data = {
"048574220e2a80": {
"name": "name1",
"firstname": "fname1",
"societe": "agency1"
},
"04ddfd12872a80": {
"name": "name2",
"firstname": "fname2",
"societe": "agency2"
},
"04d0fd12872a80": {
"name": "name3",
"firstname": "fname3",
"societe": "agency3"
}};
alert(data['048574220e2a80']['name']);
alert(data['048574220e2a80']['firstname']);
alert(data['048574220e2a80']['societe']);您的数据是在AJAX中动态生成的,还是在一开始就知道的静态数据?
如果它是静态的,你可以把它作为静态数据放在js中。
https://stackoverflow.com/questions/24246974
复制相似问题