我想加载一个外部页面(所以不使用来自查询移动设备的ajax),问题是当我使用通过点击链接标签激活的功能时,在这个功能中我有一个INSERT进入数据库,在脚本写入数据库之前遵循链接..
这是代码的一部分:
$('#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文件中我只有一个这样的标签:
<a id="aggiungiClienteRubrica" href="../client/consultClients.html" data-role="button" data-theme="b" rel="external">Add client</a>
所以问题是,我可以执行javascript,但是执行INSERT到db的异步调用记录没有被执行并且../client/consultClients.html页面被加载
如何在作业完成后按照链接进行操作?
答案 0 :(得分:0)
试试这个:
$('#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;
});
答案 1 :(得分:0)
好的,让它工作!!!
这是如何:
$('#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;
}
蒂姆蒂姆的支持......