在警报中它显示数据但不在主屏幕中

时间:2013-07-31 06:37:11

标签: javascript html5 sqlite jquery-mobile cordova

我正在使用PhoneGap SQLite,我遇到的问题是数据没有显示。警报(脚本)显示数据在那里,但它没有显示在主屏幕上。帮我弄清楚我在代码中犯了什么错误。

提前致谢。

在jQuery中:

function get_Emp_List() {             
           $("#employee").empty();

           $(location).attr('href', '#emp1');
           $.support.cors = true;   
           $.ajax({
                type: "GET",
                url: "one.html",
                contentType: "text/xml",
                dataType: "xml",
                data: "",
            crossDomain:true,
                success: function (data) {                  
                          $(data).find("employee").each(function () {   

                          var emp_id = $(this).find('id').text();
                          var emp_name = $(this).find('short_name').text();


                           db.transaction(function(transaction) {
                                 transaction.executeSql('INSERT INTO Envy_Emp VALUES((SELECT max(_idEE)+1 FROM Envy_Emp),"'+emp_id+'","'+emp_name+'")',nullHandler,errorHandler);
                            });
                             });                     
                     ids_Dynamic_Emp_List();

                          return false;
                       },
                error: function (data) {
                        alert("error");
                }
            });     
  }

      /*  end Employee list script */

   /*ids_Dynamic_Emp_List() method coding Start*/ 

  function ids_Dynamic_Emp_List(){
  /*sql start*/

  /*sqlite code for dynamic Emp list*/
  db.transaction(function(tx){
    tx.executeSql('SELECT * FROM Envy_Emp;', [], 

        function(tx,results){

                   if (results != null && results.rows != null) { 
                    var myLen=results.rows.length;
                     for (var i = 0; i < results.rows.length; i++) {
                         var for_Name = results.rows.item(i).Envy_Emp_Name;
                         var for_ID = results.rows.item(i).Envy_Emp_ID;
                         var for_E_ID=results.rows.item(i)._idEE;
                        /*create table list Dynamically using Sqlitedata base */
                             var scripts = "<a href='#' data-role='button' data-theme='b' data-inline='true' onclick='get_Menu_List(id);' id='"+for_E_ID+"'>"+for_Name+"</a>";
                             alert(scripts);
                          $(".employee1")
                          .append(scripts)
                          .trigger('create');
                        /*create table list Dynamically using Sqlitedata base End*/ 
                        }
                      }
                   },errorHandler);
                  }
                 ,errorHandler,nullHandler);
                 return; 
                  }

在HTML中:

<div data-role="page" id="emp1">
  <div date-role="content">
    <div id="employee" class="employee1"/>
  </div>
</div>

2 个答案:

答案 0 :(得分:1)

你可以试试这个。

在此函数中调用函数并传递数据,而不是附加代码。在被调用的函数中,追加传递的数据。

function ids_Dynamic_Emp_List(){
  /*sql start*/

  /*sqlite code for dynamic Emp list*/
  db.transaction(function(tx){
  tx.executeSql('SELECT * FROM Envy_Emp;', [], 

        function(tx,results){

                   if (results != null && results.rows != null) { 
                    var myLen=results.rows.length;
                     for (var i = 0; i < results.rows.length; i++) {

                             appendScripts(results.rows.item(i)); /*call function*/

                        /*create table list Dynamically using Sqlitedata base End*/ 
                        }
                      }
        },errorHandler);
   },errorHandler,nullHandler);
   return; 
}

然后在这里附加数据,

    /*function appends data to div*/
    function appendScripts(values){
          var for_Name = values.Envy_Emp_Name;
          var for_ID = values.Envy_Emp_ID;
          var for_E_ID= values._idEE;

          /*create table list Dynamically using Sqlitedata base */
          var scripts = "<a href='#' data-role='button' data-theme='b' data-inline='true' onclick='get_Menu_List(id);' id='"+for_E_ID+"'>"+for_Name+"</a>";
          $(".employee1").append(scripts).trigger('create');
    }

<强>更新 找到html 5的问题,将html更改为,

<div data-role="page" id="emp1">
       <div date-role="content">
          <div id="employee" class="employee1"></div>
       </div>
 </div>

答案 1 :(得分:-1)

阿图尔,

从评论中的讨论和看后 您的以下代码行

$(".employee1").append(scripts).trigger('create');

以下解决方案之一适合您。

  • 您应该定义css类employee1
  

如果您使用类选择器找到HTML元素,即   .employee1 ,那么你必须在某处定义该类。

  • 将该行代码修改为 $("#employee").append(scripts).trigger('create');
  

否则使用id选择器。

希望有所帮助。