使用腾讯天气异步获取天气预报

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var getNJWeather = function(){
    var mainBox = dojo.byId('portal_weather');
    mainBox.innerHTML="正在加载天气信息,请稍候...";
    var jsonpArgs = {
        //地址
        url:  'http://weather.news.qq.com/js/gn_24.js',
        //超时时间
        timeout: 10000,
        //阻止缓存
        preventCache: true,
        load: function(data) {
            if(data){
                var weather = v.find("南京").w;
                if(weather){
                    weather = weather.replace(/城市:|\<br\/>|天气:|温度:|风力:/g," ");
                    mainBox.innerHTML = weather;
                }else{
                    mainBox.innerHTML = "加载的天气信息有误";
                }
          }else{
              mainBox.innerHTML = "没有加载到天气信息";
          }
       },
       error: function(error) {
          mainBox.innerHTML = "加载天气信息超时";
       }
    };
    //使用dojo的jsonp调用
    dojo.io.script.get(jsonpArgs);
 };
 dojo.addOnLoad(function(){
    getNJWeather();
 });

上面代码可能在实际使用的时候会有问题【在ie7及以下浏览器浏览时不正常】,因为dojo.io.script.get使用了utf-8编码,而腾讯的js使用的是gb2312编码
解决方式可以先用服务端程序去读到js,然后解析成utf-8编码,供自己调用
还可以改造dojo.io.script.get方式,使他可以使用gb2312编码的js
其实可以算是dojo的一个bug,它把编码在dojo.io.script.attach函数里面写死成了utf-8,可以重写方法把编码写成可以配置状态

你可能感兴趣的:(jsonp,qq,浏览器,腾讯,dojo)