javascript - Cordova WebSQL - onSubmit

标签 javascript jquery cordova web-sql

我是 Cordova 的新手,目前正在使用它。我现在正在创建一个登录脚本,但是当我提交表单时,数据库似乎没有反应。

以下是我正在尝试做的事情:

  1. 加载 API 后,创建一个表并插入一条记录。
  2. 当用户提交表单时,检查插入的数据是否等于表格的数据。
  3. 如果匹配,转到新页面。

当我插入无用的东西时,我什至没有收到 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!");
}

最佳答案

解决了!首先我需要阻止提交按钮的默认事件。其次,我认为 results.row 不够,但这可以 if (results.rows.length > 0)

我目前使用的代码:效果很好!

function check_login() {
        event.preventDefault(); // cancel default behavior
        var username = $("#username").val();
        var password = $("#password").val();
        db.transaction(function(tx) {
            alert(tx + "test");
            tx.executeSql('SELECT * FROM LOGIN WHERE username=? AND password=?', [username, password], function(tx, results) {
                 if (results.rows.length > 0) {
                    window.location = "main.html";
                 } else {
                    alert("Invalid username or password");
                 }
            }, errorCB);
        });
    }

关于javascript - Cordova WebSQL - onSubmit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26085181/

相关文章:

javascript - csv文件到一个对象,C++

javascript - event.which 在 react 中未定义

android - Ionic Android 构建抛出警告

javascript - 控制台对象的函数被覆盖后如何使用 console.log()?

javascript - 如何使用 jQuery 和 MaterializeCSS 让我的图标切换?

android - 后台 Phonegap 以及 Activity 、流程和服务生命周期之间的关系

javascript - 如何关闭 css :hover for kendo grid (. k-grid tr :hover) without modifying the kendo css?

javascript - node.js 在服务器目录中提供 HTML 文档

javascript - react JS : set all values of nested object to false except for one

javascript - 将子级插入到 jQuery UI Accordion 的 DIV 中