javascript - 推迟 window.location 以便为 AJAX 留出时间

标签 javascript ajax window.location

我有一个索引页,我想在转到另一个页面之前用它来设置本地数据库。但是,每当我激活 window.location 代码时,其他函数都不会运行,但是当我将其注释掉时,其他函数运行正常。有什么想法会导致这种情况以及如何让函数和 window.locations 正常工作吗?代码如下:

<script>
        var db = window.openDatabase("DB1", "", "DB", 1024 * 1000)
            CreateDB(); //Creates local database tables
            loadRouteList(); //Queries web server database using AJAX and inserts Routes
            window.location = 'Application.html';
</script>

使用的函数:

function CreateDB() {
    db.transaction(function (tx) {
        tx.executeSql('CREATE TABLE IF NOT EXISTS Routes(id INTEGER PRIMARY KEY, routeID TEXT, customerID TEXT, stopSeq TEXT, driverID TEXT)', []);
    });
};
function loadRouteList() {
var dataObject = {
    postDesignator: 'routes',
};
$.ajax({
    url: 'http://url.php',
    data: dataObject,
    dataType: 'json',
    type: 'post',
    success: function (Result) {
        for (var i = 0, len = Result.records.length; i < len; ++i) {
            var route = Result.records[i].record;
            insertRoute(route.routeID, null, null, null);
        }
    }
});
}

最佳答案

使用回调!我修改了你的代码:

<script>
    var db = window.openDatabase("DB1", "", "DB", 1024 * 1000);
    CreateDB(); //Creates local database tables
    loadRouteList(function() { window.location = 'Application.html'} );
</script>

使用的函数:

function CreateDB() {
    db.transaction(function (tx) {
        tx.executeSql('CREATE TABLE IF NOT EXISTS Routes(id INTEGER PRIMARY KEY, routeID TEXT, customerID TEXT, stopSeq TEXT, driverID TEXT)', []);
    });
};
function loadRouteList(callback) {
    var dataObject = {
        postDesignator: 'routes',
    };
    $.ajax({
        url: 'http://url.php',
        data: dataObject,
        dataType: 'json',
        type: 'post',
        success: function (Result) {
            for (var i = 0, len = Result.records.length; i < len; ++i) {
                var route = Result.records[i].record;
                insertRoute(route.routeID, null, null, null);
            }
            // this is the so called callback, that gets executed AFTER the ajax has finished
            if(callback) { callback(); }
        }
    });
}

关于javascript - 推迟 window.location 以便为 AJAX 留出时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16678983/

相关文章:

php - 使用 PHP 的动态 jQuery 弹出窗口

javascript - 单击屏幕关闭灯箱

javascript - 函数定义中的星号是什么意思,比如 "function* ()"?

javascript - AngularJS 按键事件监听器 - 不是输入元素

javascript - 使用 window.location 在 url 中 &amp

angularjs - Angular $location.path() 和 window.location.reload 在 Safari/Firefox 中不起作用

javascript - 如何从 JavaScript 函数重建 URL?

javascript - enter key 和 onclick 一起

javascript - 加载更多数据 ajax PHP onscroll

jquery - 如何将 javascript 对象发送到远程 CFC 组件