zoukankan      html  css  js  c++  java
  • Demo:充分利用 Ajax 技术 来体现页面局部刷新 效果(获取天气预报情况)

     
    天气预报读取,充分利用了Ajax技术来体现页面无刷新。

    如果想获取源码,进一步学习和交流,可以回复,留下你的Email。

     1.
     2
     3    <link href="Style/default.css" rel="stylesheet" type="text/css" />
     4    <link href="Style/Div.css" rel="stylesheet" type="text/css" />
     5
     6
     7
     8<center>
     9          <div id="all">
    10            <div id="left">
    11                <div id="weather_outer">
    12                    <div id="weather">
    13                        <div id="weather_title" class="handle">
    14                            <div id="weather_title_1">天气预报</div>
    15                            <div id="weather_title_2">
    16                                <img class="hand" src="Images/refresh.gif" onclick="RefreshWeather();" alt="刷新天气"/>                          
    17                                <img class="hand" src="Images/settings.gif" onclick="EditCityWeather();" alt="定制天气" />
    18                                <img class="hand" src="Images/colapse.gif" onclick="showHide(this.parentNode.parentNode.parentNode.children[1],this);" alt="" />
    19                                <img class="hand" src="Images/close.gif" alt="" />
    20                            </div>
    21                        </div>
    22                        <div id="weather_content">
    23                            <div id="selectCityWeather">
    24                                <select id="Weather_ProvinceList" onchange="ShowCityFromProvince('Weather_ProvinceList','Weather_CityList');"></select>
    25                                省
    26                                <select id="Weather_CityList" onchange="GetWeather(this.value);"></select>
    27                                市
    28                            </div>
    29                            <div></div>
    30                        </div>
    31                    </div>
    32                </div>
    33            </div>
    34</center>
          <script type="text/javascript" language="javascript">
              init();
           </script>

    js文件中涉及的代码:
    首先要把<script type="text/javascript" src="Js/prototype.js" ></script>加进来,prototype.js可以到晚上下载。
     1function init()
     2{
     3    GetWeather();               //获得天气预报
     4}

     5
     6//获得天气预报
     7function GetWeather(theCityCode)
     8{
     9    if(!CityCode && !theCityCode) CityCode="144";
    10    if(theCityCode)
    11    {
    12        CityCode = theCityCode;
    13    }

    14    
    15    $("selectCityWeather").style.display = "none"
    16    $("weather_content").children[1].innerHTML = "<center><img src='Images/inprogress.gif' /></center>";
    17
    18    var option={
    19        parameters:"t=weather&CityCode="+CityCode,
    20        method:"get",
    21        onSuccess:function(transport){
    22            var rp=transport.responseText;
    23            var doc=new X2Doc(rp);
    24            var result=doc.root.getValue("Result");
    25            if(result=="OK")
    26            {
    27                var weather = "<ul class='weather'>";
    28                weather += "<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='#e1671c'><b>"+doc.root.getValue("City")+"</b></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+doc.root.getValue("TodayWeather")+"</li>";
    29                weather += "<li><img src='Images/Weather/WenDu.gif' alt='温度' />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+doc.root.getValue("WenDu")+"</li>";
    30                weather += "<li><img src='Images/Weather/FengLi.gif' alt='风力' />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+doc.root.getValue("FengLi")+"</li>";
    31                weather += "<li><img src='Images/Weather/ZiWaiXian.gif' alt='紫外线' />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+doc.root.getValue("ZiWaiXian")+"</li>";
    32                weather += "<li><img src='Images/Weather/KongQi.gif' alt='空气' />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+doc.root.getValue("KongQi")+"</li>";
    33                weather += "</ul>";
    34                $("weather_content").children[1].innerHTML = weather;
    35             }

    36             else 
    37             {
    38                $("weather_content").children[1].innerHTML = "数据获取失败,请检查网络或重试。";
    39             }

    40             $("weather_title_2").children[0].src="Images/refresh.gif";
    41        }
    ,
    42        onFailure:function(transport)
    43        {
    44            $("weather_content").children[1].innerHTML="数据获取失败,请检查网络或重试。";
    45            $("weather_title_2").children[0].src="Images/refresh.gif";
    46        }

    47    }

    48    var request=new Ajax.Request("ajax.aspx",option);
    49}

    50
    51//刷新天气
    52function RefreshWeather()
    53{
    54    $("weather_title_2").children[0].src="Images/indicator2.gif";
    55    GetWeather(); 
    56}

    57
    58//修改天气预报城市
    59function EditCityWeather()
    60{
    61     InitProvince("Weather_ProvinceList");
    62     if($("selectCityWeather").style.display == "none")
    63     {
    64        $("selectCityWeather").style.display = "block";
    65     }

    66     else
    67     {
    68        $("selectCityWeather").style.display = "none";
    69     }
        
    70}

    71

     该天气信息要使用到的Js文件或Js代码

     1var ArrayCatalog1 = new Array (
     2    new aCatalog('125','北京','000'),
     3    new aCatalog('125','北京','北京'),
     4
     5    new aCatalog('201','重庆','000'),
     6    new aCatalog('201','重庆','奉节'),
     7    new aCatalog('212','重庆','重庆'),
     8    new aCatalog('213','重庆','涪陵'),
     9
    10    
    11    new aCatalog('252','上海','上海'),
    12    new aCatalog('252','上海','000'),
    13    
    14    new aCatalog('173','云南','000'),
    15    new aCatalog('173','云南','昭通'),
    16    new aCatalog('174','云南','丽江'),
    17    new aCatalog ('0''0','0')
    18    //篇幅太长,仅提供一部分
    19);
    20
    21function AddOption (sText,sValue,obSelect2) 
    22{
    23    var newItem = document.createElement("OPTION") ;
    24        
    25    newItem.text =  sText ;
    26    newItem.value =  sValue ;
    27    document.getElementById(obSelect2).options.add(newItem);    
    28}

    29function DelOption (obSelect2) 
    30{
    31    var iLength = document.getElementById(obSelect2).options.length ;
    32    for ( var i = iLength - 1 ; i >= 0 ; i -- )
    33        document.getElementById(obSelect2).options[i]=null ;
    34}

    35function InitProvince(ProvinceSelect)
    36{
    37   var i;
    38   DelOption(ProvinceSelect);
    39   for(i=0;i<ArrayCatalog1.length-1;i++)
    40   {
    41      if(ArrayCatalog1[i].sCity=='000')
    42      {
    43         AddOption(ArrayCatalog1[i].sProvince,ArrayCatalog1[i].sProvince,ProvinceSelect);
    44      }

    45   }

    46}

    47function ShowCityFromProvince(ProvinceSelect,CitySelect)
    48{
    49  if($(ProvinceSelect).options.length<1)
    50       InitProvince(ProvinceSelect);     
    51   var i;
    52   var s=document.getElementById(ProvinceSelect).value;
    53   DelOption(CitySelect);
    54   AddOption("请选择","-1",CitySelect);
    55   for(i=0;i<ArrayCatalog1.length-1;i++)
    56   {
    57      if(ArrayCatalog1[i].sProvince==s&&ArrayCatalog1[i].sCity!='000')
    58      {
    59         AddOption(ArrayCatalog1[i].sCity,ArrayCatalog1[i].sId,CitySelect);
    60      }

    61   }

    62}

    63
    64 function GetWeather(CityCode)
    65  {
    66    if(CityCode=="-1"||CityCode=='000')
    67        return false;
    68     setcookie("LYG_BoBoLog_Weather",CityCode,12);
    69     ComAjax.GetCurrentWeather(CityCode,Result_GetWeatherByCity);
    70     document.getElementById ("Weather.ascx_Weather").innerHTML  ="正在读取气象数据";
    71     document.getElementById ("Weather.ascx_City").innerHTML   =""
    72     document.getElementById ("Weather.ascx_WenDu").innerHTML   ="";
    73     document.getElementById ("Weather.ascx_FengLi").innerHTML  ="";
    74     document.getElementById ("Weather.ascx_ZiWaiXian").innerHTML  ="";
    75     document.getElementById ("Weather.ascx_KongQi").innerHTML  =""
    76  }

    77  
    78  function Result_GetWeatherByCity(result)
    79  {
    80    if(!result.error)
    81    {
    82    document.getElementById ("Weather.ascx_City").innerHTML   =(result.value)[0]; 
    83    document.getElementById ("Weather.ascx_Weather").innerHTML  =(result.value)[1];
    84    document.getElementById ("Weather.ascx_WenDu").innerHTML   =(result.value)[2];
    85    document.getElementById ("Weather.ascx_FengLi").innerHTML  =(result.value)[3];
    86    document.getElementById ("Weather.ascx_ZiWaiXian").innerHTML  =(result.value)[4];
    87    document.getElementById ("Weather.ascx_KongQi").innerHTML  =(result.value)[5]; 
    88    CloseSetCity();
    89    }

    90  }

    ajax.aspx文件

     1using System.Text;
     2
     3public partial class ajax : System.Web.UI.Page
     4{
     5    protected string st
     6    {
     7        get {
     8            if (null == Request.QueryString["t"])
     9                return string.Empty;
    10            return Request.QueryString["t"].Trim();
    11        }

    12    }

    13    protected string request = string.Empty;
    14    protected StringBuilder sb = new StringBuilder();
    15
    16    protected void Page_Load(object sender, EventArgs e)
    17    {
    18        switch (st)
    19        {
    20            case "weather":
    21                GetWeather();
    22                break;
    23            default:
    24                break;
    25        }

    26
    27        Response.Write(request);
    28    }

    29
    30    protected void GetWeather()
    31    {
    32        string strCityCode = (Request.QueryString["CityCode"== null ? string.Empty : Request.QueryString["CityCode"]);
    33        Weather wea = WeatherInfo.GetCurrentWeather(strCityCode);
    34        if (wea.City != "-1")
    35        {
    36            sb.Append("<weather>");
    37            sb.Append("<City>" + wea.City + "</City>");
    38            sb.Append("<TodayWeather>" + wea.TodayWeather + "</TodayWeather>");
    39            sb.Append("<WenDu>" + wea.WenDu + "</WenDu>");
    40            sb.Append("<FengLi>" + wea.FengLi + "</FengLi>");
    41            sb.Append("<ZiWaiXian>" + wea.ZiWaiXian + "</ZiWaiXian>");
    42            sb.Append("<KongQi>" + wea.KongQi + "</KongQi>");
    43            sb.Append("<Result>OK</Result>");
    44            sb.Append("</weather>");
    45        }

    46        else
    47        {
    48            sb.Append("<weather><Result>False</Result></weather>");
    49        }

    50
    51        request = sb.ToString();
    52    }

    53}

    Weather类文件:

     1public static Weather GetCurrentWeather(string CityCode)
     2    {
     3        try
     4        {
     5            Uri myUri = new Uri("http://weather.news.qq.com/inc/ss" + CityCode + ".htm");
     6            HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create(myUri);
     7            myWebRequest.Method = "GET";
     8            HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse();
     9
    10            StreamReader reader = new StreamReader(myWebResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312"));
    11            byte[] buffer = System.Text.Encoding.GetEncoding("GB2312").GetBytes(reader.ReadToEnd());
    12            string HTML = System.Text.Encoding.GetEncoding("GB2312").GetString(buffer).Trim();
    13            string temp = "";
    14
    15            int start, stop;
    16            start = HTML.IndexOf("</style>"0, HTML.Length);
    17            stop = HTML.IndexOf("<script>"0, HTML.Length);
    18            temp = HTML.Substring(start, stop - start);
    19            Regex regex = new Regex("<[^>]*>");
    20            string[] ss = regex.Split(temp);
    21            string t = "";
    22            foreach (string p in ss)
    23            {
    24                if (p.Trim().Length > 0)
    25                    t += p + "/";
    26            }

    27            string[] sss = t.Split('/');
    28            Weather weather = new Weather();
    29            if (sss.Length > 0) weather.City = sss[0];
    30            if (sss.Length > 1) weather.TodayWeather = sss[1];
    31            if (sss.Length > 2) weather.WenDu = sss[2];
    32            if (sss.Length > 3) weather.FengLi = sss[3];
    33            if (sss.Length > 4) weather.ZiWaiXian = sss[4];
    34            if (sss.Length > 5) weather.KongQi = sss[5];
    35
    36            reader.Close();
    37            myWebResponse.Close();
    38            return weather;
    39        }

    40        catch
    41        {
    42            Weather w = new Weather();
    43            w.City = "-1";
    44            return w;
    45        }

    46    }
    1public class Weather
    2{
    3    public string City;  // 城市
    4    public string TodayWeather; //天气
    5    public string WenDu; // 温度
    6    public string FengLi; // 风力
    7    public string ZiWaiXian; // 紫外线
    8    public string KongQi; // 空气
    9}


    HTML=

      1<style type="text/css">
      2body,table{font-size:12px;line-height:150%;}
      3A.color4:link {COLOR: #DD7D02;TEXT-DECORATION: none}
      4A.color4:visited { COLOR: #DD7D02;TEXT-DECORATION: none} 
      5A.color4:active { COLOR: #DD7D02;TEXT-DECORATION: underline} 
      6A.color4:hover { COLOR: #DD7D02;TEXT-DECORATION: underline}
      7</style>
      8<table width="189" border="0" cellspacing="0" cellpadding="0" align="center">
      9<tr><td colspan="3"><img src="/images/r_t1.gif" width="189" height="35"></td></tr>
     10<tr align="center"><td height="60" colspan="3"><table width="189" border="0" cellspacing="0" cellpadding="0" background="/images/r_tembg2.gif">
     11<tr><td colspan="2"><img src="/images/r_tembg1.gif" width="189" height="6"></td></tr>
     12<tr>
     13<td height="23" width="72" align="center" background="/images/r_tembg4.gif" class="rb12">北京</td>
     14<td height="23" width="117" background="/images/r_tembg5.gif" align="center">雷阵雨</td>
     15</tr>
     16<tr>
     17<td height="23" align="center"><img src="/images/tem1.gif" width="57" height="13"></td>
     18<td height="23" align="center">20℃~29
     19     </td>
     20</tr>
     21<tr><td height="1" align="center" colspan="2" background="/images/line2.gif"></td></tr>
     22<tr>
     23<td height="23" align="center"><img src="/images/tem2.gif" width="57" height="13"></td>
     24<td height="23" align="center">无风向微风</td>
     25</tr>
     26<tr><td height="1" align="center" colspan="2" background="/images/line2.gif"></td></tr>
     27
     28    <tr>
     29<td height="23" align="center"><img src="/images/tem3.gif" width="57" height="13"></td>
     30<td height="23" align="center"></td>
     31</tr>
     32<tr><td height="1" align="center" colspan="2" background="/images/line2.gif"></td></tr>
     33<tr>
     34<td height="23" align="center"><img src="/images/tem5.gif" width="57" height="13"></td>
     35<td height="23" align="center"></td>
     36</tr>
     37
     38<tr><td colspan="2"><img src="/images/r_tembg3.gif" width="189" height="3"></td></tr>
     39</table></td></tr>
     40<tr>
     41<td height="30" width="96"><img src="/images/r_b.gif" width="96" height="21"></td>
     42<td width="88" align="center"><script>
     43function getcookie(name) {
     44    var my_cookie = document.cookie;
     45    var start = my_cookie.indexOf(name + "@weather.qq.com" + "=");
     46    if (start == -1return '';
     47    
     48    start += name.length + 16//1 stands of '='
     49    
     50    var end = my_cookie.indexOf(";" ,start);
     51    if (end == -1) end = my_cookie.length;
     52    return my_cookie.substr(start, end - start);
     53}

     54
     55function setcookie(name,value,open, path) {
     56    var nextyear = new Date();
     57    if (open) {
     58        nextyear.setFullYear(nextyear.getFullYear() + 1);
     59    }
     else {
     60        nextyear.setFullYear(1970);
     61    }

     62    document.cookie = name + "@weather.qq.com" + "=" + value + "; expires=" + nextyear.toGMTString() + "; path=" + path; 
     63}

     64
     65function getredirect(v) {
     66    setcookie('default_city', v, true"/");
     67    setcookie('default_city1', v, true"/inc");
     68
     69    if (v=='') v=123;
     70    window.location.href='http://weather.qq.com/inc/ss'+v+'.htm';
     71}

     72</script>
     73
     74<select id="obSelect" onchange="getredirect(this.value)">
     75
     76<option selected="selected" value="125">北京</option>
     77<option value="292">广州</option>
     78<option value="252">上海</option>
     79<option value="127">天津</option>
     80<option value="212">重庆</option>
     81<option value="115">沈阳</option>
     82<option value="244">南京</option>
     83<option value="211">武汉</option>
     84<option value="166">成都</option>
     85<option value="186">西安</option>
     86<option value="82">石家庄</option>
     87<option value="84">太原</option>
     88<option value="189">郑州</option>
     89<option value="103">长春</option>
     90<option value="17">哈尔滨</option>
     91<option value="69">呼和浩特</option>
     92<option value="140">济南</option>
     93<option value="248">合肥</option>
     94<option value="255">杭州</option>
     95<option value="276">福州</option>
     96<option value="287">厦门</option>
     97<option value="218">长沙</option>
     98<option value="296">深圳</option>
     99<option value="295">南宁</option>
    100<option value="232">桂林</option>
    101<option value="264">南昌</option>
    102<option value="227">贵阳</option>
    103<option value="1">香港</option>
    104<option value="2">澳门</option>
    105<option value="179">昆明</option>
    106<option value="280">台北</option>
    107<option value="150">拉萨</option>
    108<option value="303">海口</option>
    109<option value="57">兰州</option>
    110<option value="78">银川</option>
    111<option value="56">西宁</option>
    112<option value="28">乌鲁木齐</option>
    113
    114</select>
    115<script>
    116
    117var v=getcookie('default_city1');
    118var o=document.getElementById('obSelect');
    119if (v!= '') o.value=v;
    120
    121</script>
    122</td>
    123<td width="16"></td>
    124</tr>
    125

    temp=
     1<table width="189" border="0" cellspacing="0" cellpadding="0" align="center">
     2<tr><td colspan="3"><img src="/images/r_t1.gif" width="189" height="35"></td></tr>
     3<tr align="center"><td height="60" colspan="3"><table width="189" border="0" cellspacing="0" cellpadding="0" background="/images/r_tembg2.gif">
     4<tr><td colspan="2"><img src="/images/r_tembg1.gif" width="189" height="6"></td></tr>
     5<tr>
     6<td height="23" width="72" align="center" background="/images/r_tembg4.gif" class="rb12">北京</td>
     7<td height="23" width="117" background="/images/r_tembg5.gif" align="center">雷阵雨</td>
     8</tr>
     9<tr>
    10<td height="23" align="center"><img src="/images/tem1.gif" width="57" height="13"></td>
    11<td height="23" align="center">20℃~29
    12     </td>
    13</tr>
    14<tr><td height="1" align="center" colspan="2" background="/images/line2.gif"></td></tr>
    15<tr>
    16<td height="23" align="center"><img src="/images/tem2.gif" width="57" height="13"></td>
    17<td height="23" align="center">无风向微风</td>
    18</tr>
    19<tr><td height="1" align="center" colspan="2" background="/images/line2.gif"></td></tr>
    20
    21    <tr>
    22<td height="23" align="center"><img src="/images/tem3.gif" width="57" height="13"></td>
    23<td height="23" align="center"></td>
    24</tr>
    25<tr><td height="1" align="center" colspan="2" background="/images/line2.gif"></td></tr>
    26<tr>
    27<td height="23" align="center"><img src="/images/tem5.gif" width="57" height="13"></td>
    28<td height="23" align="center"></td>
    29</tr>
    30
    31<tr><td colspan="2"><img src="/images/r_tembg3.gif" width="189" height="3"></td></tr>
    32</table></td></tr>
    33<tr>
    34<td height="30" width="96"><img src="/images/r_b.gif" width="96" height="21"></td>
    35

    参考源码:

    https://files.cnblogs.com/Dlonghow/Source%20Code/AjaxSolution1.rar

  • 相关阅读:
    敏捷思维-架构设计中的方法学(12)Refactoring
    敏捷思维-架构设计中的方法学(11)精化和合并
    敏捷思维-架构设计中的方法学(8)架构愿景
    敏捷思维-架构设计中的方法学(10)分层 (下)
    Agile 敏捷建模思想 作者:林星
    敏捷思维-架构设计中的方法学(9)分层 (上)
    敏捷思维-架构设计中的方法学(13)稳定化
    敏捷思维-架构设计中的方法学(15)进一步阅读
    hdu 1829+hdu 1856(并查集)
    hdu 1050+hdu 1789+hdu 3177(贪心)
  • 原文地址:https://www.cnblogs.com/Dlonghow/p/1232675.html
Copyright © 2011-2022 走看看