快要升级了,最近有学json。所以就有了一个小的练习。因为要升级的原因,所有就赶紧来一波,以后有好的技术分享肯定会第一时间发来的~

先来一波图片

115823eethh6ibs5tlbges.png

115833elhi05mz5ulld2nz.png

115843cttmactwy11snbyk.png

115837jzegbg5ffy99bkeb.png

天气预报

介绍

首先 介绍下用的东西. HTML  AJAX JavaScript jQuery

简单说明

没有什么技术含量,按老师的说法是ajax实现网页不刷新动态更新,jQuery 跨域访问 。因为ajax虽然可以实现不刷新页面的更新,但是它不支持跨域访问,jQuery正好可以跨域访问。所以搭配使用。

主要代码

function getResults(param){

var url="http://aider.meizu.com/app/weather/listWeather";

$.getJSON(url, param, function(e){

weatherResult=e;

if(weatherResult!=null){

//更新基本信息

basic();

//更新一天内小时天气

hourInDay();

//6天内的天气

daysIn6();

//空气质量

airQuality();

//指数

indexes();

//其他天气信息

weatherMore();

}else{

console.log("数据更新失败!"+$(this).val());

}

});

}

//更新基本天气信息

$("#cs").change(function(){

var param = {"cityIds":$(this).val()};

getResults(param);

});

其实在这里需要说明一下,$.getJSON(url, param, function(e)

这段里面的参数 url 是地址:http://aider.meizu.com/app/weather/listWeather param 是传入的json格式的数据,这里包含的就只是地区编号。function(e){}是一个回调。e是获得的返回数据,一些天气信息。可以自定义。

注意

在更新页面数据的时候,我之前用过一个很傻的办法,个人认为应该是习惯了java吧。这个办法会造成页面执行完毕后,数据没有更新。最后在老师那里得出的结果是:

>这个问题出现的原因和javascript执行有关,因为 $.getJSON 是一个网络请求,js在翻译的时候,不会管你这个$.getJSON方法有没有返回内容,他就会往下继续执行直到页面全部翻译结束,所以页面第一次没有数据。

我可能描述的没有老师说的清晰,但大概是这么个意思。我贴出我之前的错误代码:

//需要获取城市信息

function getResults(param){

$.getJSON(url, param, function(e){

weatherResult = e;

});

}

//更新基本天气信息

$("#cs").change(function(){

//console.log($(this).val());

var param = {"cityIds":$(this).val()};

getResults(param);

if(weatherResult!=null){

//更新基本信息

basic();

//更新一天内小时天气

hourInDay();

//6天内的天气

daysIn6();

//空气质量

//指数

//其他天气信息

}else{

console.log("数据更新失败!"+$(this).val());

}

});

还有一点忘了说,浏览器不支持跨域访问的需要安装扩展插件全都已经包含在了文件里面:nlfbmbojpeacfghkpbjhddihlkkiljbi.crx

最后

欢迎大神指正,刚学到js这边来,可能有错请多包涵~(论坛炸了啊,我访问ui全乱,各种加载不出2017年8月4日12:40:53)

希望大家多多评分~谢谢~

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐