phonegap jquerymobile-在异步工作完成时加载页面

phonegap jquerymobile-在异步工作完成时加载页面,jquery,cordova,jquery-mobile,asynchronous,Jquery,Cordova,Jquery Mobile,Asynchronous,我想加载一个外部页面,这样就不用从query mobile使用ajax,问题是当我使用一个通过点击链接标签激活的函数时,在这个函数中,我有一个插入到数据库中的命令,在脚本写入数据库之前,链接会被跟随 下面是代码的一部分: $('#aggiungiClienteRubrica').click(function() { db = window.openDatabase("Database", "1.0", "Cordova Demo",

我想加载一个外部页面,这样就不用从query mobile使用ajax,问题是当我使用一个通过点击链接标签激活的函数时,在这个函数中,我有一个插入到数据库中的命令,在脚本写入数据库之前,链接会被跟随

下面是代码的一部分:

$('#aggiungiClienteRubrica').click(function() {

                               db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
                               db.transaction(function(tx){
                                              var sql = 'INSERT INTO CLIENTI (nome, cognome) VALUES ("'+$('#nome').val()+'", "'+$('#cognome').val()+'")';
                                              tx.executeSql(sql)}, errorCB);
                               });
在html文件中,我有一个这样的标记:

function click(e){

db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
e.preventDefault();
db.transaction(function(tx){
               var sql = 'INSERT INTO CLIENTI (nome, cognome) VALUES ("'+$('#nome').val()+'", "'+$('#cognome').val()+'")';
               tx.executeSql(sql)}, errorCB, successCreation);
}
所以问题是,我可以执行javascript,但不会执行将记录插入数据库的异步调用,并且会加载../client/consultClients.html页面

如何使其在作业完成后跟随链接??

尝试以下操作:


$('#aggiungiClienteRubrica').click(function(e) {
    e.preventDefault(); // will stop default link action

    // capture the link url
    var url = $(this).attr('href');

    // your DB stuff here, wait for completion
    // (I'm not familiar with local DB so don't know that part)

    // use this if you managed to do the above synchronously
    // or in a 'success' callback
    window.location.href = url;
});


好的,让它工作起来

以下是方法:

$('#aggiungiClienteRubrica').click(function(e) {
                               var myVar = click(e);
                               myVar;
});
然后单击函数定义如下:

function click(e){

db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
e.preventDefault();
db.transaction(function(tx){
               var sql = 'INSERT INTO CLIENTI (nome, cognome) VALUES ("'+$('#nome').val()+'", "'+$('#cognome').val()+'")';
               tx.executeSql(sql)}, errorCB, successCreation);
}
然后定义回调函数successCreation:

function successCreation(){
var href = $('#aggiungiClienteRubrica').attr('href');
window.location.href = href;

}

感谢您的支持……

链接已被跟踪,但数据库未更新,我尝试了其他类似主题中建议的类似内容,但尚未开始工作……看看这个问题:哇,我刚刚发现了一个全新的世界,闭包。。我需要研究它,因为一小时前我甚至不知道它的存在。。顺便说一句,如果有人愿意加入一些代码作为一个关闭的例子,它将不胜感激!我自己不看文档,不知道如何传递executeSql调用的回调,但我已经更新了代码,以显示如何捕获链接href。您可以在回调中使用url变量。注意,您不能使用$this,因为闭包中的范围将不同。