Я новичок в Javascript и пытаюсь написать дополнение Firefox.
Я пытаюсь передать/извлечь данные, возвращенные из SQL-запроса, вызывающей функции. Это не работает.
Я искал информацию об области видимости переменной, посмотрел на любой соответствующий пост, который я видел на этом сайте, и попробовал примеры, которые, как говорили, работали, но никто не работает для меня.возвращает данные от executeAsync к вызывающей функции (javascript/mozilla)
Я использую информацию хранения от:
https://developer.mozilla.org/en/Storage
https://developer.mozilla.org/en/mozIStorageStatement
Что мне делать неправильно, или как я должен это сделать?
Я запускаю firefox 12 на xp.
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.
}
Я очень ценю вашу помощь
Извините за неопределенное, я думал, что я был чист. Но вы поняли, потому что вы привели меня к решению. Спасибо за это. (Я извлек колонки, но это не имело значения для проблемы) Вот что я сделал:
Однако, это элегантный способ сделать это? – LaurelЯ бы проголосовал за тебя, но я слишком стар. Недостаточно репутации. Еще раз спасибо – Laurel
Я думаю, вы сбиваете с толку запрос, который успешно возвратил нулевые строки (потому что таблица пуста) с неудавшимся запросом (поскольку, например, db поврежден). В противном случае, да, это звучит прекрасно. –