我是 Javascript 新手,正在尝试编写一个 firefox 插件。
我正在尝试将从 SQL 查询返回的数据传递/提取到调用函数。它似乎不起作用。
我搜索了有关变量范围的信息,查看了我可以在此站点上看到的任何相关帖子,并尝试了据说有效的示例,但没有一个对我有用。
我使用的存储信息来自:
https://developer.mozilla.org/en/Storage
https://developer.mozilla.org/en/mozIStorageStatement
我做错了什么,或者我该怎么做?
我在 xp 上运行 Firefox 12。
function Sqlite() {
this.dbConn = "";
this.empty = true;
}
Sqlite.prototype.retrieveData = function(query)
{
var rows = new Array(); // to be returned to the calling function
var stmt = this.dbConn.createStatement(query); // my "select..." statement
stmt.executeAsync ({
handleResult: function(aResultSet)
{
this.empty = false;
var i = 0;
for (let row; row = aResultSet.getNextRow();i++) {
rows[i] = row;
}
},
handleError: function(anError) {
//some code
},
handleCompletion: function(aReason) {
if (this.empty) {
// CODE FOR WHEN STATEMENT EXECUTION IS FINISHED
}
if (aReason == Ci.mozIStorageStatementCallback.REASON_FINISHED) {
document.getElementById("debug").value = rows[0]; //gets the data from the query: [xpconnect wrapped mozIStorageRow]
return true;
}
}
});
document.getElementById("debug").value = rows[0]; //gets undefined
stmt.finalize();
return rows; // the info is no longer available at this point.
}
我会非常感谢你的帮助