最新项目中遇到一个问题,页面需要显示一些天气信息,但是部署网站的服务器没连接外网,只有客户端的电脑能连外网,于是想用js去实现这个功能。

刚开始找了一些方法,单独在浏览器中可以使用,但是在项目中运行的时候IE会提示jquery拒绝访问,上网一查才知道这个方法涉及到了跨域访问的问题。

于是寻找解决方案:

1.先在head中引用这两个js,第二个js是中国天气网的api,因为我需要查的只是海淀的天气情况,所以写成了固定值,到时候换成需要查询的城市名称就可以了。

<script type="text/javascript" src="js/jquery-1.6.2-min.js"></script>
<script type="text/javascript" src="http://9snow.org/weather/api?city=海淀&var=test1&jsoncallback=?"></script>

2.普通的ajax方法不能跨域,需要用jQuery.getJSON方法获取,在传url的时候,地址的后面要跟一个callback回调函数的字符串,如果是问号,则默认走第三个参数的

回调函数,返回的json值为test1,然后像普通json那样解析就可以了。

$(function () {
var url = "http://9snow.org/weather/api?city=海淀&var=test1";
jQuery.getJSON(url + "&callback=?", function () {
if (test1) {
var info = eval(test1);
var value = "城市:" + info["weatherinfo"].city;
value += ",温度:" + info["weatherinfo"].temp1;
value += ",今日天气:" + info["weatherinfo"].weather1;
alert(value);
}
});
});

3.下面是返回数据的格式以及各个参数的意思

        //数据格式及参数说明
// {
// "weatherinfo": {
// "city": "海淀", // 城市中文名
// "city_en": "haidian", // 城市英文名
// "date_y": "2013年10月11日", // 发布日期
// "date": "", // ?
// "week": "星期五", // 周信息
// "fchh": "18", // 信息发布时的整点小时数
// "cityid": "101010200", // 城市ID
// "temp1": "18℃~26℃", // 今日气温
// "temp2": "17℃~29℃", // 明日气温
// "temp3": "18℃~23℃", // 第三日气温
// "temp4": "13℃~24℃", // 第四日气温
// "temp5": "15℃~31℃", // 第五日气温
// "temp6": "14℃~32℃", // 第六日气温
// "tempF1": "64.4℉~78.8℉", // 今日气温(华氏)
// "tempF2": "62.6℉~84.2℉", // 明日气温(华氏)
// "tempF3": "64.4℉~73.4℉", // 第三日气温(华氏)
// "tempF4": "55.4℉~75.2℉", // 第四日气温(华氏)
// "tempF5": "59℉~87.8℉", // 第五日气温(华氏)
// "tempF6": "57.2℉~89.6℉", // 第六日气温(华氏)
// "weather1": "多云", // 今日天气
// "weather2": "晴转多云", // 明日天气
// "weather3": "雷阵雨转小雨", // 第三日天气
// "weather4": "多云", // 第四日天气
// "weather5": "晴", // 第五日天气
// "weather6": "晴", // 第六日天气
// "img1": "1", // 天气图标编号,此处的编号及其图片获取规则尚不清楚,如有知道详情的恳请评论告知,我将添加说明
// "img2": "99", // 天气图标编号
// "img3": "0", // 天气图标编号
// "img4": "1", // 天气图标编号
// "img5": "4", // 天气图标编号
// "img6": "7", // 天气图标编号
// "img7": "1", // 天气图标编号
// "img8": "99", // 天气图标编号
// "img9": "0", // 天气图标编号
// "img10": "99", // 天气图标编号
// "img11": "0", // 天气图标编号
// "img12": "99", // 天气图标编号
// "img_single": "1", // ? 可能是天气图标编号
// "img_title1": "多云", // ? 可能是天气图标对应的 title
// "img_title2": "多云", // ? 可能是天气图标对应的 title
// "img_title3": "晴", // ? 可能是天气图标对应的 title
// "img_title4": "多云", // ? 可能是天气图标对应的 title
// "img_title5": "雷阵雨", // ? 可能是天气图标对应的 title
// "img_title6": "小雨", // ? 可能是天气图标对应的 title
// "img_title7": "多云", // ? 可能是天气图标对应的 title
// "img_title8": "多云", // ? 可能是天气图标对应的 title
// "img_title9": "晴", // ? 可能是天气图标对应的 title
// "img_title10": "晴", // ? 可能是天气图标对应的 title
// "img_title11": "晴", // ? 可能是天气图标对应的 title
// "img_title12": "晴", // ? 可能是天气图标对应的 title
// "img_title_single": "多云", // ? 可能是天气图标对应的 title
// "wind1": "西南风小于3级转西风3-4级", // 今日风向风力信息
// "wind2": "西风小于3级转西南风3-4级", // 明日风向风力信息
// "wind3": "西南风小于3级转3-4级", // 第三日风向风力信息
// "wind4": "西南风小于3级转3-4级", // 第四日风向风力信息
// "wind5": "西南风小于3级转3-4级", // 第五日风向风力信息
// "wind6": "西南风小于3级转3-4级", // 第六日风向风力信息
// "fx1": "西南风", // ?
// "fx2": "西风", // ?
// "fl1": "小于3级转3-4级", // 今日风力信息
// "fl2": "小于3级转3-4级", // 明日风力信息
// "fl3": "小于3级转3-4级", // 第三日风力信息
// "fl4": "小于3级转3-4级", // 第四日风力信息
// "fl5": "小于3级转3-4级", // 第五日风力信息
// "fl6": "小于3级转3-4级", // 第六日风力信息
// "index": "热",
// "index_d": "天气较热,建议着短裙、短裤、短套装、T恤等夏季服装。年老体弱者宜着长袖衬衫和单裤。",
// "index48": "炎热",
// "index48_d": "天气炎热,建议着短衫、短裙、短裤、薄型T恤衫、敞领短袖棉衫等清凉夏季服装。",
// "index_uv": "中等", // 紫外线信息
// "index48_uv": "弱", // 48 小时紫外线信息
// "index_xc": "较适宜", // 洗车指数
// "index_tr": "适宜", // 旅游指数
// "index_co": "舒适", // 舒适指数
// "st1": "25",
// "st2": "17",
// "st3": "28",
// "st4": "19",
// "st5": "18",
// "st6": "16",
// "index_cl": "较适宜", // 晨练指数
// "index_ls": "适宜", // 晾晒指数
// "index_ag": "极易发" // 感冒指数(感谢读者 刘睿 的提醒)
// }
//}

4.下面的地址可以查看城市的id

http://www.360doc.com/content/12/1102/09/4808208_245235392.shtml

Jquery跨域读取城市天气预报信息的更多相关文章

  1. JSON跨域读取那点事(JSONP跨域访问)

    最近在码一个小项目,需要远程读取json.因为需求很少,如果引用jquery使用其getjson方法就显得很浪费嘛= = 这篇文章很详细的解释了JSON跨域读取的前世今生,把原理讲得很透彻.特此分享. ...

  2. Jquery跨域获得Json

    这两天用 Jquery 跨域取数据的时候,经常碰到 invalid label 这个错误,十分的郁闷,老是取不到服务器端发送回来的 json 值, 一般跨域用到的两个方法为:$.ajax 和$.get ...

  3. jquery 跨域请求数据问题

    昨天参加了一个前端的面试,被问到一个跨域请求数据问题,我们之前一直用的是apicloud的api进行请求的,跨域是被apicloud封装起来的,也就没有注意跨域请求数据的问题.当被问到用jquery跨 ...

  4. jquery跨域3

    这两天用 Jquery 跨域取数据的时候,经常碰到 invalid label 这个错误,十分的郁闷,老是取不到服务器端发送回来的 json 值, 一般跨域用到的两个方法为:$.ajax 和$.get ...

  5. jQuery跨域调用WebService

    jQuery跨域调用WebService举例html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  6. jQuery跨域

    其实jQuery跨域很简单很简单,你记住格式就好,跨域的原理请参考 <jsonp跨域> jQuery跨域代码: $.ajax({ url:'https://suggest.taobao.c ...

  7. jquery跨域调用wcf

    使用jquery跨域调用wcf服务的时候会报如下错误 $.ajax({ url: 'http://localhost:28207/Service1.svc/GetData', method: 'get ...

  8. jquery跨域访问解决方案(转)

    客户端“跨域访问”一直是一个头疼的问题,好在有jQuery帮忙,从jQuery-1.2以后跨域问题便迎刃而解.由于自己在项目中遇到跨域问题,借此机会对跨域问题来刨根问底,查阅了相关资料和自己的实践,算 ...

  9. C#彻底解决Web Browser 跨域读取Iframes内容

    C#彻底解决Web Browser 跨域读取Iframes内容 用C# winform的控件web browser 读取网页内容,分析一下数据,做一些采集工作. 如果是同一个域名下面还是好办的,基本上 ...

随机推荐

  1. poj 1679 Prim判断次短路

    题意:判断最短路是否唯一. 思路:先prrim一次求出最短路同时记录最短路加入的边: 然后枚举所求边,将其删除再求n-1次prim,判断再次所求得的最短路与第一次求得的次短路的关系. 代码: #inc ...

  2. 深度剖析Java变量栈&对象堆

    Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间 ...

  3. 201521123084 《Java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 1)线程:指进程中的一个执行流程: 2)一个进程可以同时运行多个不同线程,不同线程执行不同的任务: 3)创建 ...

  4. 201521123121 《JAVA程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声 ...

  5. 201521123074 《Java程序设计》第5周学习总结

    1.本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 接口定义了解:接口(interface)就是方法声明和常量值的集合. 几种接口讲解 ...

  6. Linux Ubuntu jdk(环境变量)配置

    一.下载JDK - jdk版本建议是gz形式的,rpm是RedHat里面的命令,所以下载rpm格式的时候回遇到问题 二. 打开虚拟机,创建目录 1 创建目录 #mkdir home 2 转到该目录下 ...

  7. python 输出颜色的与样式的方法

    上次遇到这个问题就想写下来,其实当时我也不怎么会,老师说这个东西不需要理解,只需要死记硬背,写的多了就记住了,所以今天搜集了几篇文章,加上自己的理解,写下了这篇python 输出颜色的样式与方法的文章 ...

  8. [01] Pattern类和Matcher类

    在Java中,有个java.util.regex包,这是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 它主要有两个类: Pattern   一个正则表达式经编译后的表现模式,可以理解为 ...

  9. JSP页面格式化数字或时间 基于jstl的

    jsp页面格式化数字或时间 转载自: http://blog.csdn.net/hakunamatata2008/archive/2011/01/21/6156203.aspx Tags fmt:re ...

  10. 作为一个C#程序员, 你应该上手Kotlin

    Kotlin最近火了, 在Google IO大会 Kotlin宣布Kotlin将会成为Android官方开发语言之后, Kotlin这样一个JVM上的新*(其实从诞生到现在已经有5年历史的)语言. 终 ...