我有幾個關於Sqlite實現HTML5網站的問題。HTML5 SQLite Db問題
首先,我試圖使用同步數據庫調用openDatabaseSync方法,但它似乎並沒有工作......有人使用它,可以幫助我嗎?
此外,我掙扎了一下,試圖通過我的數據庫查詢處理結果返回。我想我的函數返回書的數組,像這樣:
function searchByKeywordId(kw_id, element) {
cleanSearch();
element.innerHTML = "No result...";
var books = new Array();
db.transaction(function (tx) {
tx.executeSql("SELECT b.BK_TITLE,b.BK_URL, b.BK_THUMBNAIL_URL FROM KEYWORDS k INNER JOIN CATALOG_ITEMS c on k.KW_ID = c.KW_ID INNER JOIN BOOKS b on c.BK_ID = b.BK_ID WHERE k.KW_ID = ? GROUP BY b.BK_TITLE,b.BK_URL",[kw_id], function (tx, results) {
if (results.rows.length > 0) {
var html = "";
for (var i = 0; i < results.rows.length; i++) {
var bookId = results.rows.item(i).BK_ID;
var bookUrl = results.rows.item(i).BK_URL;
var bookTitle = results.rows.item(i).BK_TITLE;
var bookThumbnailUrl = results.rows.item(i).BK_THUMBNAIL_URL;
var book = new Book(bookId,bookTitle,bookUrl,bookThumbnailUrl);
books.push(book);
/*html += "<div class='x_container' id='calibre:book:" + bookId + "'>";
html += "<div class='cover'>";
html += "</div></div>";*/
html += "<a href='" + bookUrl + "' title=\"" + bookTitle + "\" target='_new'><img src='" + bookThumbnailUrl + "'></a> ";
}
//html += "</div>";
element.innerHTML = html;
}
});
});
return books; }
明顯,加上回調方法內的書籍不工作...你看到一個方法,我可以做到這一點?所以,我不會寫在我的數據庫方法的文件...
謝謝!
添加了Web-SQL標籤 - 請注意,這不是HTML5的一部分。 – Nickolay
據我所知,同步版本的方法並未得到廣泛支持,即使它們在規範中提到過。我自己測試了它們,例如Chrome v16.0.912.77不支持同步API(TypeError:「Object [object DOMWindow] has no method'openDatabaseSync'」)。關於你的第二個問題,你確定「executeSql」方法沒有生成和錯誤嗎?將錯誤回調添加到它並查看是否引發錯誤。另外,您可以直接在Chrome中的「開發人員工具」的「資源」選項卡中執行,以確保您的命令是正確的。 –
@Gabobcat openDatabaseSync確實存在於Chrome中,但爲了使用它,您必須使用WebWorkers ...並且是的,我確定我的查詢能夠正常工作 – Farid