【问题标题】:fetch data from a dynamic page/table?从动态页面/表中获取数据?
【发布时间】:2016-04-04 13:39:50
【问题描述】:

创建动态页面是为了显示从数据库中获取的数据,动态页面还为要呈现的数据创建一个表。

然后我在每组结果下都有一个按钮(btnJoin),该按钮会触发更新表格的功能。

为了更新表格,我需要获取用户加入的特定事件,因此是否可以从按钮所在特定事件的标题 (response.rows.item(i).Title) 中获取数据按下了吗?

我对更新函数的 SQL 查询应该类似于:

tx.executeSql("Update soccerevents SET NoPeople  = NoPeople +1 WHERE Title = '" + response.rows.item(i).Title + "'", [], successJoin,errorCB);

JavaScript(动态页面/表格):

function fetchEvent() {
   db = window.openDatabase("SoccerEarth", "2.0", "SoccerEarthDB", 2 * 1024 * 1024);
   db.transaction(function(tx) {
   var TitleT = document.getElementById("texttitle").value;
   tx.executeSql("SELECT * FROM SoccerEvents WHERE Title LIKE '%" + TitleT + "%'", [], successCBValue, errorCB);
         });
 function successCBValue(tx, response, page_id) {
    var formElements = "<table id='resulttable' data-role='table' data-mode='reflow' class='ui-responsive table-stroke table-stripe'><thead><tr><th>Title</th><th>Location</th><th>NoPeople</th><th>Date</th><th>Description</th></tr></thead><tbody>";
     for (var i = 0; i < response.rows.length; i++) {
     formElements += "<tr><td>"
      + response.rows.item(i).Title + "</td><td>"
      + response.rows.item(i).Location +"</td><td>"
      + response.rows.item(i).NoPeople + "</td><td>"
      + response.rows.item(i).Date +"</td><td>"
      + response.rows.item(i).Description + "<button data-rowtitle='" + response.rows[i].Title + "' data-mini='true' class='btnJoin'>Join</a></td></tr>";
      }
    formElements+="</tbody></table>";
      alert("For better viewing of events, tilt phone landscape.");
     $('#page_body').append('<div data-role="page" data-theme="d" id="' + page_id + '"><div data-role="content">' + formElements + '<a href="#page4" data-role="button" data-mini="true">Return</a></div></div>');
     $.mobile.initializePage();
     $.mobile.changePage("#" + page_id);
        $(document).on("click", ".btnJoin", function(e){
                    var title = $(this).data("rowtitle");
                    alert(title);
                });
   }
}
 function updateEvent() {
         var title = document.getElementById("rowtitle");
         db = window.openDatabase("SoccerEarth", "2.0", "SoccerEarthDB", 2 * 1024 * 1024);
         db.transaction(function(tx) {
         tx.executeSql("Update soccerevents SET NoPeople  = NoPeople +1 WHERE Title = '" + title + "'", [], successJoin,errorCB);
              });
         function successJoin() {
         navigator.notification.alert("You have joined the event!", null, "Information", "ok");
         $( ":mobile-pagecontainer" ).pagecontainer( "change", "#page4" );
                                                                                 }
}

【问题讨论】:

    标签: javascript jquery mysql sql jquery-mobile


    【解决方案1】:

    您可以将标题添加为按钮的数据属性

    for (var i = 0; i < response.rows.length; i++) {
        formElements += "<tr><td>" + response.rows[i].Title + "</td><td>" + 
        response.rows[i].Location +"</td><td>" + 
        response.rows[i].NoPeople + "</td><td>" + 
        response.rows[i].Date +"</td><td>" + 
        response.rows[i].Description + 
        "<button data-rowtitle='" + response.rows[i].Title + "' class='btnJoin' >Click me</button></td></tr>";
    }
    

    然后在按钮单击处理程序中,使用 jQuery data() 方法检索属性:

    $(document).on("click", ".btnJoin", function(e){
        var title = $(this).data("rowtitle");
        alert(title);
    });
    

    DEMO

    【讨论】:

    • 我尝试了上述方法(没有放入点击处理程序),动态页面现在根本没有打开。我把 + response.rows[i].Title + 取出来,取而代之的是一些虚词,动态页面开始照常工作。所以看起来我实际上不能在按钮中使用 response.rows?
    • 我也更新了我的问题,所以它显示了我的函数(updateEvent),它试图从标题中获取数据。
    • @Mahdi,您可能只是在某处打错了字。确保有正确的引号。如果虚拟文本有效,插入标题也应该有效...
    • 我复制并粘贴了您的代码..?另外,当我说我使用了虚拟文本时,我完全删除了 ++ 和双引号,因此 data-rowtitle='test' 起作用了。
    • 好的,我删除了双引号,只留下了单引号,页面又可以工作了。但是,我对用于 updateEvent 函数的变量感到困惑。您能否详细说明如何将标题拉入我的 updateEvent 函数?感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    相关资源
    最近更新 更多