テンセントの天気の非同期を使って天気予報を取得します


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();
 });

上記のコードは、dojoのため、実際に使用するときに問題がある可能性があります.io.script.getはutf-8符号化を用いるが、テンセントのjsはgb 2312符号化解決方式を用いる、まずサービス側プログラムでjsを読み、それからutf-8符号化に解析することができ、自分で呼び出すためにdojoを改造することもできる.io.script.get方式は、gb 2312で符号化できるjsをdojoのバグとすることができ、dojoに符号化することができる.io.script.attach関数にはutf-8と書かれており、書き換え方法で符号化を構成可能な状態に書くことができます.