1

我想将数据存储在数据库或本地存储中。第一次从网络服务下载我的列表时,我希望这个列表存储在数据库中。我做了一些事情,但介于两者之间。请帮助我,我是phonegap技术的初学者。
下次用户打开此屏幕时,它将从数据库而不是 Web 服务中获取列表。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Cache-control" content="no-cache">
    <title>First Group</title>
    <link href="style/style.css" rel="stylesheet" type="text/css" />
    <script language="javascript" type="text/javascript" src="script/actb.js"></script>
    <script language="javascript" type="text/javascript" src="script/actb2.js"></script>
    <script type="text/javascript" src="script/common.js"></script>
    <script type="text/javascript" src="script/soapclient.js"></script>
    <script type="text/javascript" src="script/cordova-1.9.0.js"></script>
    <script type="text/javascript">

        //Wait for Cordova to load
      // document.addEventListener("deviceready", onDeviceReady, false);

        //Cordova is loaded and it is now safe to make calls Cordova methods

        function onDeviceReady() 
        {
            checkConnection();
        }

        function checkConnection() 
        {
            var networkState = navigator.network.connection.type;

            var states = {};
            states[Connection.UNKNOWN]  = 'Unknown connection';
            states[Connection.ETHERNET] = 'Ethernet connection';
            states[Connection.WIFI]     = 'WiFi connection';
            states[Connection.CELL_2G]  = 'Cell 2G connection';
            states[Connection.CELL_3G]  = 'Cell 3G connection';
            states[Connection.CELL_4G]  = 'Cell 4G connection';
            states[Connection.NONE]     = 'No network connection';
            //alert('Connection type: ' + states[networkState]);
            if(states[networkState]=="No network connection")
            {
                alert("No Connection Available ");
                navigator.app.exitApp();
            }   
        }
        var stationList = new Array;    

        function GetStationCodes()
        {   
********************************check condition if there is element in database can you give some condition to check data base ******
            if(window.localStorage.getItem(1)!=null){
            alert("break");
            loadList();
            break;  
            } 
            document.getElementById('loadingImg').style.visibility = "visible"; 

             var pl = new SOAPClientParameters();
             var parameter1 = "";
             var parameter2 = "";
             pl.add("parameter1", parameter1);
             pl.add("parameter2", parameter2);
             SOAPClient.invoke(WSDLURL, "stationSearch", pl, true, GetStationCodes_callBack);
        }

        function loadList()
        {
            *************Get list from data base.  how to get keys length?********
            for (var i = 0; i <20 ; i++)
            {
             document.getElementById('loadingImg').style.visibility = "hidden";
            document.getElementById('submitBtn1').removeAttribute('disabled');
            document.getElementById('submitBtn2').removeAttribute('disabled');
            document.getElementById('getStationDesc').removeAttribute('disabled');
                stationList[i] = window.localStorage.getItem(i);
                //alert(stationList[i]);

            }

        }
        function GetStationCodes_callBack(r)
        { 
            document.getElementById('loadingImg').style.visibility = "hidden";
            document.getElementById('submitBtn1').removeAttribute('disabled');
            document.getElementById('submitBtn2').removeAttribute('disabled');
            document.getElementById('getStationDesc').removeAttribute('disabled');
**********************download list*********************
            for (var i = 0; i < r.length-1; i++)
            {
                stationList[i] = r[i].stationCode + " - " + r[i].stationName;
******************************save data in local storage***********************
                 window.localStorage.setItem(i,stationList[i] );
            }
            //alert( );


        }   
        function SetAction(flag)
        {
            if(flag==1)
            {
                 document.frmIndex.action="arrival.html";
            }
            else
            {
                // document.frmIndex.action="departure.html";
                 document.frmIndex.action="destination.html";
            }
        }
    </script>
</head>
<body onload="GetStationCodes()">
    <div id="wrapper">
        <div class="login_cont">
            <div class="home_icon"><a href="#"><img src="images/home-icon.png" alt="Home" title="Home" /></a></div>
            <h1 class="fr">Station ID</h1>
            <div class="cl"></div>
            <form name="frmIndex" type=get>
                <div class="log_cont">
                    <input id="getStationDesc" name="getStationDesc" type="text" class="log_txtfield" disabled="disabled"/>
                    <script>
                        var obj = actb(document.getElementById('getStationDesc'),stationList);
                        //setTimeout(function(){obj.actb_keywords = custom2;},10000);
                        this.actb_timeOut = -1;
                        // Number of elements autocomplete can show (-1: no limit)
                        this.actb_lim = 10;
                        // should the auto complete be limited to the beginning of keyword?
                        this.actb_firstText = true;
                        // Enable Mouse Support
                        this.actb_mouse = true;
                        // Delimiter for multiple autocomplete.
                        // Set it to empty array for single autocomplete
                        this.actb_delimiter = new Array(' ',',');
                        // Show widget only after this number of characters is typed in.
                        this.actb_startcheck = 1;

                        this.actb_bgColor = '#dbe3ec';
                        this.actb_textColor = '#00256a';
                        this.actb_hColor = '#dbe3ec';
                        this.actb_fFamily = 'arial';
                        this.actb_fSize = '16px';   
                        this.actb_hStyle = 'text-decoration:underline;font-weight="bold";text-align="left"';
                        function FillValues()
                        {
                            document.getElementById('getStationCode').value = document.getElementById('getStationDesc').value.substring(0,3);               
                        }
                    </script>
                    <div>

      <img src="images/ajax-loader.gif" id="loadingImg" visible =true style="margin:auto; position: absolute; left:50%; top:50%;"/>

</div>

                    <input id="getStationCode" name="getStationCode" type="hidden" /></div>
                    <input id="submitBtn1" type=submit  class="heading_btn" style="margin-top:10px;margin-left:50px" value="Arrival Dashboard" onclick="FillValues();SetAction(1)"  disabled="disabled">
                    <input id="submitBtn2"  type=submit class="heading_btn" style="margin-top:10px;margin-left:40px" value="Departure Dashboard" onclick="FillValues();SetAction(2)" disabled="disabled">

                </div>
            </form>
        </div>
    </div>
</body>
</html>
4

1 回答 1

0

使用你所拥有的,你可以循环遍历 while .getItem(i) !== undefined

您可以将返回的数据保存到 localStorage 而不是每个项目。

 window.localStorage.setItem('stations',JSON.stringify(stationList) );

然后当你来检查它是否在那里然后阅读

  if (typeof  localStorage.stations!== 'undefined' &&  localStorage.stations!=null) {
       var stationList= JSON.Parse(localStorage.stations)
    }

或者你可以使用 webDB 和草坪椅

 <script type="text/javascript" src="Lawnchair.js" charset="utf-8"></script> 
 <script type="text/javascript" src="webkit-sqlite.js" charset="utf-8"></script>

 // Open local DB connection
 var lawnchair = new Lawnchair({table:'staions', adaptor:'webkit'}, function(){
// Lawnchair setup! 
 });

 // Getting some data out of the lawnchair database
 lawnchair.get('my_data_key', function(obj) {
 if (obj !== undefined) {
    lastSyncDate = obj.lastSync;
    dataList = obj.dataList;
}
 });

 // Saving to the database
 lawnchair.save({key:'my_data_key', lastSync: currentTime, dataList: someData});
于 2012-12-11T10:43:00.673 回答