1

这可能吗?

在任何页面加载之前,我可以运行 JavaScript 代码来检查数据库中的值是什么,然后打开相关页面吗?

到目前为止,这是我的代码:

function onDeviceReady()    //Phone gap is ready
{
    try 
    {
        db = openDatabase('cuopioid', '1.0', 'cupioids application database',
                2 * 1024 * 1024);
    } catch (e) 
    {
        // Error handling code goes here.
        if (e == INVALID_STATE_ERR) 
        {
            // Version number mismatch.
            alert("Invalid database version.");
        }
        else 
        {
            alert("Unknown error " + e + ".");
        }
    }
    console.log("DATABASE Created!");
    db.transaction(createTableTerms, errCB, console.log("MEDICINES Table Created!"));
    $('#btnaccept').on('click', acceptTerms);
}

下面的代码创建数据库(如果它不存在)

function createTableTerms(tx) 
{
    tx.executeSql('CREATE TABLE IF NOT EXISTS TERMS (id unique, status boolean)');
    tx.executeSql('INSERT INTO TERMS (id, status) VALUES (0, 0)');
    console.log("TERMS Table Created!");
}

我已经创建了这个函数,如果它设置为 true,则从数据库中选择行,然后如果结果有 1 条记录,我希望它打开菜单页面,如果它没有结果,则意味着条款和条件还没有之前接受:

function checkTerms(tx)
{
    db.transaction(function(tx) 
    {
        tx.executeSql('SELECT * FROM TERMS WHERE status=1', [],console.log("check terms"), errCB);
    });
    var len = results.rows.length;
    if (len = 1)
    {
        console.log("accepted previously - menu page");
    }
    else
    {
        console.log("termsandconditions page");
    }
}

我不知道把这个 checkTerms(tx) 函数放在哪里

4

2 回答 2

2

我通过创建一个新的 JavaScript 文件解决了这个问题,该文件在 html 页面加载时运行(<head>标签的开头

  • 哪个打开数据库
  • 运行 SQL 查询以查找值
  • 根据结果​​打开相关页面

当我加载页面时,它仍然显示页面(最多半秒),但它做我想要的

这是代码:

try 
{
    db = openDatabase('cuopioid', '1.0', 'cupioids application database',
            2 * 1024 * 1024);
} catch (e) 
{
    // Error handling code goes here.
    if (e == INVALID_STATE_ERR) 
    {
        // Version number mismatch.
        alert("Invalid database version.");
    }
    else 
    {
        alert("Unknown error " + e + ".");
    }
}

checkTerms();

function checkTerms(tx)
{
    db.transaction(function(tx) 
    {
        tx.executeSql('SELECT * FROM TERMS WHERE status=1', [], openPage, errCB);
    });
}   

function openPage(tx, results)
{
    var len = results.rows.length;
    if (len = 1)
    {
        getDrugs();
        window.location.href = "#page1"
        console.log("accepted previously - menu page");
    }
    else
    {
        window.location.href = "#page0"
        console.log("termsandconditions page");
    }
}
于 2013-07-25T09:58:19.560 回答
0

解决此问题的另一种方法可能是根据您的数据库值编写一个 php 页面作为一种票据交换所,然后将用户重定向到相关页面。您可以使用 ajax 执行此操作,并且用户也不会暂时看到错误的页面。

于 2013-11-29T20:28:50.423 回答