吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7679|回复: 31
收起左侧

[其他转载] ajax跨域访问--天气预报小练习分享~【论坛炸了】

[复制链接]
dj1149 发表于 2017-8-4 12:01
本帖最后由 dj1149 于 2017-8-4 14:34 编辑

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


先来一波图片



天气预报

介绍

首先 介绍下用的东西. 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&gt; 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)
希望大家多多评分~谢谢~


补上源文件:https://pan.baidu.com/s/1dFal78H

ui问题已经好了,刚才是用手机开的wifi。连上正常宽带就没问题了

免费评分

参与人数 8吾爱币 +7 热心值 +8 收起 理由
(●─●) + 1 + 1 我很赞同!
tzdjz + 1 + 1 谢谢@Thanks!
福建是我 + 1 + 1 热心回复!
helloword121 + 1 + 1 我很赞同!
2271325928 + 1 + 1 昨天在做这个 一直卡在跨域,今天看了这个才明白 我的 没有插件
丨健哥哥丨 + 1 用心讨论,共获提升!
天天404 + 1 + 1 MARKDOWN的发帖效果真帅
aa702429162 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zdouble 发表于 2017-8-4 12:13
[Asm] 纯文本查看 复制代码
在更新页面数据的时候,我之前用过一个很傻的办法,个人认为应该是习惯了java吧。这个办法会造成页面执行完毕后,数据没有更新。最后在老师那里得出的结果是: >这个问题出现的原因和javascript执行有关,因为 $.getJSON 是一个网络请求,js在翻译的时候,不会管你这个$.getJSON方法有没有返回内容,他就会往下继续执行直到页面全部翻译结束,所以页面第一次没有数据。

用专业术语来说ajax是异步的
williamye 发表于 2017-8-5 00:33
老铁,纠正你一下,jQuery只是一个封装好的js库,他并不能实现跨域,jq里面的ajex是将原声ajex做了封装,让你方便使用,实现跨域请求的目前有jsonp ,h5的cors,你可以学学原声的ajex ,自己创建xhr,可以去百度下,告诉你们老师,他说的不对.跨域访问是jsonp,和jq,ajex半毛钱关系都没有,记住了,要不面试的时候人家一听,你就露馅了,老铁是培训班出来的吧,哈哈,猜对没?
lizhirui 发表于 2017-8-4 12:17
楼主很不错,继续努力,不过很好奇谷歌的插件名为啥一直是一串随机字母序列。。
巨无霸 发表于 2017-8-4 12:18
Ajax做天气预报?
林海山河 发表于 2017-8-4 12:39
传不上文件?
 楼主| dj1149 发表于 2017-8-4 12:41 来自手机
zdouble 发表于 2017-8-4 12:13
[mw_shl_code=asm,true]在更新页面数据的时候,我之前用过一个很傻的办法,个人认为应该是习惯了java吧。这 ...

哈哈 惭愧惭愧。现在还在学习中~多谢指正
夙杀々冷封 发表于 2017-8-4 13:00
楼主辛苦了
夏雨微凉 发表于 2017-8-4 13:39
有时候换个浏览器就好了
屿圪 发表于 2017-8-4 13:46
看看大神的操作
 楼主| dj1149 发表于 2017-8-4 14:29
lizhirui 发表于 2017-8-4 12:17
楼主很不错,继续努力,不过很好奇谷歌的插件名为啥一直是一串随机字母序列。。

仅仅只是懒得改。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 22:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表