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

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 == -1)
 
8  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" );
 11
if (!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 == -1
)
 
21  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 = 0
;
 
30  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) + 1
;
 
35    if (i == 0
)
 
36       break
;
 
37  }

 
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=1
;
 
45 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() {
 61
if (!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);
17
18    }

19
20    回调的固定格式回调的固定格式
42
43    解析url的页面内容的方法体解析url的页面内容的方法体
79}

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

后台代码:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值