使用SQlite事务进行多次AJAX调用后回调

时间:2015-11-30 17:57:43

标签: jquery ajax sqlite

我有多个带有SQlite事务的AJAX调用来添加数据。由于某些原因,其中一个AJAX调用未执行但hideLoadingScreen()触发正常。

我正在使用此代码来计算回调:

showLoadingScreen();

var callbackCount = 0;

function ajaxCallback() {
  ++callbackCount;
  if (callbackCount >= 3) {
  hideLoadingScreen();
  }
}

我使用SQlite交易的三个AJAX调用如下:

$.ajax({
    url: url,
    jsonp: "callback",
    dataType: "jsonp",
    success: function (data) {
        db.transaction(function (tx) {
            $.each(data.result, function (i, item) {
                tx.executeSql('INSERT OR REPLACE INTO db_table (id, type, title) VALUES (?,?,?)', [item.ID, "update", item.post_title]);
            });
            ajaxCallback();
        });
    }
});

或者还有其他方法如何在succesfull之后计算回调 - db.transactions ????

2 个答案:

答案 0 :(得分:0)

ajaxCallback();循环内移动$.each(...),因为在AJAX调用结束后success回调执行一次

修改:在hideLoadingScreen();之后,将计数器重置为零,如callbackCount = 0;

答案 1 :(得分:0)

应用程序必须先等待AJAX​​调用完成,然后才能开始事务并在cordova-sqlite-exe中添加数据元素

直到ajax调用完成为止,所有语句将在ajax调用完成后处于队列状态,然后只有所有语句开始逐个执行

如果要计算插入的行数,从成功退出 回调,请执行Select查询以返回表的长度。