2012-02-16 10 views
3

jQuery Mobileを使用してHTML5 Webサイトを構築しました。Webデータベース - 毎回実行されないtx.executeSqlコールバック

私の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); 
} 

答えて

2

この問題を回避するには、ページ間を移動するときにajaxを無効にする必要があります。これは、ahrefタグにdata-ajax = "false"を追加して行いました。これにより、ページが正しく読み込まれ、問題が解決されました。

関連する問題