根据IP获取当地天气预报的实现

    技术2022-05-11  52

      1 < script language = " Javascript " >  2var city  =   new  Array( " 安徽 " , " 黑龙江 " , " 山东 " , " 北京 " , " 湖北 " , " 山西 " , " 福建 " , " 湖南 " , " 陕西 " , " 甘肃 " , " 吉林 " , " 上海 " , " 广东 " , " 江苏 " , " 四川 " , " 广西 " , " 江西 " , " 天津 " , " 贵州 " , " 辽宁 " , " 西藏 " , " 海南 " , " 内蒙古 " , " 新疆 " , " 河北 " , " 宁夏 " , " 云南 " , " 河南 " , " 青海 " , " 浙江 " , " 重庆 " ); 3var weaths  =   new  Array( ' 58321 ' , ' 50953 ' , ' 54823 ' , ' 54511 ' , ' 57494 ' , ' 53772 ' , ' 59134 ' , ' 57679 ' , ' 57036 ' , ' 52889 ' , ' 54172 ' , ' 58367 ' , ' 59287 ' , ' 58238 ' , ' 56294 ' , ' 59431 ' , ' 58606 ' , ' 54527 ' , ' 57816 ' , ' 54342 ' , ' 55591 ' , ' 52856 ' , ' 53463 ' , ' 51463 ' , ' 53698 ' , ' 53614 ' , ' 56778 ' , ' 57083 ' , ' 52866 ' , ' 58457 ' , ' 57516 ' );  4  5function getCookieVal (offset)  6  var endstr = document.cookie.indexOf (";", offset); 7  if (endstr == -18  endstr = document.cookie.length; 9  return unescape(document.cookie.substring(offset, endstr));10} 11function GetCookie (name)  {12  var arg = name + "=";13  var alen = arg.length;14  var clen = document.cookie.length;15  var i = 0;16  while (i < clen) {17    var j = i + alen;18    if (document.cookie.substring(i, j) == arg)19      return getCookieVal (j);20    i = document.cookie.indexOf(" ", i) + 1;21    if (i == 0)22       break;23  }24  return "";25} 26function SetCookie(cookieName,cookieValue,nDays)  {27 var today = new Date();28 var expire = new Date();29 if (nDays==null || nDays==0) nDays=1;30 expire.setTime(today.getTime() + 3600000*24*nDays);31 document.cookie = cookieName+"="+escape(cookieValue) + ";path=/;domain=.163.com;expires="+expire.toGMTString();32} 33function getCityWeatherID(cityname) {34    for(i=0;i<city.length;i++){35    if(city[i]==cityname){36        return weaths[i];37        }38    }39    return "54511";40} 41 42var NTES_WeatherAddr  =  GetCookie( " NTES_WeatherAddr " );43 if  ( ! NTES_WeatherAddr) {44    var loc = GetCookie("theaddr");45    if(!loc){46        document.write("<script type='text/javascript' src='http://202.108.39.152/ipquery'><" + "/script>");47    }48} 49 </ script > 50 < script > 51 if  ( ! NTES_WeatherAddr) {52    NTES_WeatherAddr=getCityWeatherID(loc);53} 54window.location.href = " http://news.163.com/weather/news/qx1/ " + NTES_WeatherAddr + " .html " ; 55 </ script > 上面的这段js实现了对来访者IP判断并给出了天气预报结果的链接。Js里的此链接: http://202.108.39.152/ipquery ,起到的是判断用户所在地的作用,返回的是来访者所在地省份。  1<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"  ResponseEncoding="GB2312" %>    2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    3<html xmlns="http://www.w3.org/1999/xhtml">    4<head runat="server">    5<title></title>    6<script>   7var city  = new Array("安徽","黑龙江","山东","北京","湖北","山西","福建","湖南","陕西","甘肃","吉林","上海","广东","江苏","四川","广西","江西","天津","贵州","辽宁","西藏","海南","内蒙古","新疆","河北","宁夏","云南","河南","青海","浙江","重庆" );  8var weaths = new Array('58321','50953','54823','54511','57494','53772','59134','57679','57036','52889','54172','58367','59287','58238','56294','59431','58606','54527','57816','54342','55591','52856','53463','51463','53698','53614','56778','57083','52866','58457','57516' );  9  10var NTES_WeatherAddr  = GetCookie("NTES_WeatherAddr" ); 11if (!NTES_WeatherAddr) 12    var loc = GetCookie("theaddr"); 13    if(!loc)14        document.write("<script type='text/javascript' src='http://202.108.39.152/ipquery'><" + "/script>"); 15    } 16}   17  18function getCookieVal (offset)  19  var endstr = document.cookie.indexOf (";", offset); 20  if (endstr == -121  endstr = document.cookie.length; 22  return unescape(document.cookie.substring(offset, endstr)); 23}   24  25function GetCookie (name)  26  var arg = name + "="27  var alen = arg.length; 28  var clen = document.cookie.length; 29  var i = 030  while (i < clen) 31    var j = i + alen; 32    if (document.cookie.substring(i, j) == arg) 33      return getCookieVal (j); 34    i = document.cookie.indexOf(" ", i) + 135    if (i == 036       break37  } 38  return ""39}   40  41function SetCookie(cookieName,cookieValue,nDays)  42 var today = new Date(); 43 var expire = new Date(); 44 if (nDays==null || nDays==0) nDays=145 expire.setTime(today.getTime() + 3600000*24*nDays); 46 document.cookie = cookieName+"="+escape(cookieValue) + ";path=/;domain=.163.com;expires="+expire.toGMTString(); 47}   48   49//根据Ip服务器返回的省份名称获取对应的编号  50function getCityWeatherID(cityname) 51    for(i=0;i<city.length;i++)52    if(city[i]==cityname)53        return weaths[i]; 54        } 55    } 56    return "57816"57}   58   59//获取所在地天气预报结果的链接  60function getWeatherUrl() { 61if (!NTES_WeatherAddr)62    NTES_WeatherAddr=getCityWeatherID(loc); 63     64} 65var addr="http://news.163.com/weather/news/qx1/"+NTES_WeatherAddr+".html"; 66document.form1.Text1.value=addr; 67}   68   69//客户端调用服务端方法实现对天气预报结果链接的页面内容进行解析,Anthem实现方式  70function showWeatherByAnthem()  71    Anthem_InvokePageMethod("ShowWeatherByAnthem", [], getServerResult); 72}   73  74function getServerResult(result)  75    document.getElementById("result").innerHTML = result.value; 76}   77   78//客户端调用服务端方法实现对天气预报结果链接的页面内容进行解析,_doPostBack实现方式  79function showWeatherBylink() 80 81    __doPostBack('LinkButton1',''); 82}   83   84//客户端调用服务端方法实现对天气预报结果链接的页面内容进行解析,CallBack实现方式  85function showWeatherByCallBack() 86 87    var context=document.getElementById("result"); 88    var weatherUrl=document.getElementById("Text1"); 89    var arg="ShowWeatherByCall|" + weatherUrl.value; 90    <%= ClientScript.GetCallbackEventReference(this,"arg","outPutResult","context")%>91}  92function outPutResult(result)  93 {      94   document.getElementById("result").innerHTML = result; 95         96}   97</script>   98</head>   99<body onload="getWeatherUrl(),showWeatherByCallBack()"> 100    <form id="form1" runat="server"> 101        <span id="result"></span> 102        <input id="Text1" type="hidden" runat="server" /> 103    </form> 104</body> 105</html> 106

     

     

    1 using  System; 2 using  System.Data; 3 using  System.Configuration; 4 using  System.Web; 5 using  System.Web.Security; 6 using  System.Web.UI; 7 using  System.Web.UI.WebControls; 8 using  System.IO; 9 using  System.Net;10 using  Anthem; 11 12 public   partial   class  _Default : System.Web.UI.Page, ICallbackEventHandler 13 {14    protected void Page_Load(object sender, EventArgs e)15    {16        Anthem.Manager.Register(this);1718    }1920    回调的固定格式回调的固定格式4243    解析url的页面内容的方法体解析url的页面内容的方法体79}

    客户端调用服务端的方法,__doPostBack方式,没有实现服务端的方法体,跟其余两种方式大致一样。当前是采用的CallBack方式调用服务端方法,如果想使用Anthem方式 ,更换onload里第二个function就可以了。

    后台代码:

    最新回复(0)