1
我是Cordova的新手,目前正在使用它。我現在正在創建一個登錄腳本,但是當我提交表單時,它看起來像數據庫不會作出反應。Cordova WebSQL - onSubmit
以下是我想要做的事:
- 當API的加載,創建一個表並插入一條記錄。
- 當用戶提交表單時,檢查插入的數據是否等於表的數據。
- 如果匹配,則轉到新頁面。
我甚至沒有得到警報invalid ...
當我插入一些無用的東西。我在啓動應用程序時收到了success!
提醒。
HTML:
<form id="login" onsubmit="check_login();" class="form-signin">
<input id="username" type="text" class="form-control" placeholder="Name" required autofocus>
<input id="password" type="password" class="form-control" placeholder="Password" required>
<button class="btn btn-lg btn-primary btn-block" type="submit">
Sign in
</button>
</form>
JAVASCRIPT:
var db;
function check_login() {
var username = $("#username").val();
var password = $("#password").val();
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM LOGIN WHERE username=? AND password=?', [username, password], function(tx, results) {
if (results.rows) {
window.location = "main.html";
} else {
alert("Invalid username or password");
}
}, null);
});
}
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(populateDB, errorCB, successCB);
}
// Populate the database
//
function populateDB(tx) {
tx.executeSql('DROP TABLE IF EXISTS LOGIN');
tx.executeSql('CREATE TABLE IF NOT EXISTS LOGIN (id unique, username, password)');
tx.executeSql('INSERT INTO LOGIN (id, username, password) VALUES (1, "Admin", "Admin")');
}
// Transaction error callback
//
function errorCB(tx, err) {
alert("Error processing SQL: " + err.code);
}
// Transaction success callback
//
function successCB() {
alert("success!");
}
來自文檔:對於SQL select語句,rowsAffected始終爲0。對於插入或更新語句,它會返回已修改的行數。所以,請改用'if(results.rows)'。 – Regent 2014-09-28 13:21:01
啊thanx !!將更新,在代碼中嘗試它,但我的代碼沒有得到if語句。所以問題依然存在。 – 2014-09-28 13:26:53
在check_login執行過程中,您是否在控制檯中發現錯誤?確保'function(tx,results)'被執行(你可以通過在開始時設置'alert'或者用'errorCB'替換'null'來檢查它)? – Regent 2014-09-28 13:38:26