1

新しい window.location に移動する前に、AJAX クエリを実行し、結果をローカル データベースに挿入しようとしています。ただし、結果を挿入する成功関数は実行されません。代わりに、コールバック関数によって新しいページが読み込まれます。if (callback {callback();} をコメントアウトすると、AJAX は挿入を完了しますが、window.location コードは明らかに呼び出されません。コールバック関数は、AJAX 成功関数が完了する前に呼び出されるようです。どうすればよいですか先に進む前に結果を挿入するために AJAX の成功を取得しますか?私が使用しているコードは次のとおりです。

<script>
        var db = window.openDatabase("MantisMobileDB1", "", "MantisMobileDB", 1024 * 1000);
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 insertRoute(routeID, customerID, stopSeq, driverID) {
    db.transaction(function (tx) {
        tx.executeSql('INSERT INTO Routes (routeID, customerID, stopSeq, driverID) VALUES (?, ?, ?, ?)', [routeID, customerID, stopSeq, driverID], CountReturns);
    });
}

        function loadInitialRouteList(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);
                    }
                    if (callback) { callback(); }
                }
            });

        }

    if (localStorage.getItem('exitsatus') === null) {
        CreateDB();
        loadInitialRouteList(function () { window.location = 'Application.html'; }); 
    }
    else {
        window.location = localStorage.getItem('exitsatus');
    }
</script>
4

0 に答える 0