Веб-база данных - обратный вызов tx.executeSql не работает каждый раз - PullRequest
3 голосов
/ 16 февраля 2012

У меня есть сайт HTML5, созданный с помощью jQuery Mobile.

На моей странице index.htm у меня есть Ahref. Когда я нажимаю на эту ссылку, я запускаю функцию, которая выполняет tx.executeSql, и запускается метод обратного вызова, который затем переходит на новую страницу.

Работает отлично с первого раза.

Если я перехожу на другие страницы и затем возвращаюсь на страницу index.htm, функции запускаются при нажатии на ссылку, однако обратный вызов в tx.executeSql никогда не запускается.

Любые идеи будут с благодарностью. Я использовал все разные механизмы для вызова функций из javascript в jquery, но это не имеет значения.

Для ясности - первая вызванная функция setFeaturedRecruiter () - вы можете увидеть код ниже. Во второй раз, когда я возвращаюсь сюда, функция обратного вызова renderResults не запускается.

// when we click on the actual featured recruiter link we copy from this table to the featured recruiter table to overwrite its contents
function setFeaturedRecruiter() {
    alert('setFeaturedRecruiter()');
    retrieveActualFeaturedRecruiter();
    return true;
}

function retrieveActualFeaturedRecruiter() {
    alert('retrieveActualFeaturedRecruiter()');
    db.transaction(function (tx) {
    alert('select * from featuredRecruiterActual...');
    tx.executeSql('SELECT * FROM featuredRecruiterActual', [], renderResults, pnetOnError);
    });
}

pnetOnError = function (tx, e) {
    alert('Something unexpected happened: ' + e.message);
}

function renderResults(tx, rs) {
    alert('renderResults()');
    var idNo;
    var name;
    var logo;
    var totalAds;
    for (var i = 0; i < rs.rows.length; i++) {
    r = rs.rows.item(i);
    idNo = r.idNo * 1;
    name = r.name;
    logo = r.logo;
    totalAds = r.totalAds;
    }

    writeToFeaturedRecruiter(idNo, name, logo, totalAds);
}

1 Ответ

2 голосов
/ 19 февраля 2012

Я обошел эту проблему, отключив ajax при переходе между страницами. Это было сделано путем добавления к тегу ahref: data-ajax = "false". Это привело к правильной загрузке страницы и устранению проблемы.

...