phonegap jquerymobile-在异步工作完成时加载页面
我想加载一个外部页面,这样就不用从query mobile使用ajax,问题是当我使用一个通过点击链接标签激活的函数时,在这个函数中,我有一个插入到数据库中的命令,在脚本写入数据库之前,链接会被跟随 下面是代码的一部分: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",
$('#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,因为闭包中的范围将不同。