Web数据库 - 每次都没有运行tx.executeSql回调

时间:2012-02-16 05:50:35

标签: html5 jquery-mobile web-sql

我有一个使用jQuery Mobile构建的HTML5网站。

在我的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 个答案:

答案 0 :(得分:2)

我通过在页面之间导航时禁用ajax解决了这个问题。这是通过添加到ahref标签来完成的:data-ajax =“false”。这导致页面正确加载并克服了问题。