Jsを動的にロードする方法は、天気予報の結果をロードすることを示します.
3269 ワード
私はフォーラムでたくさんの動的なjsの方法の答えを探しましたが、効果はあまり理想的ではありません.その後、sinaで答えを見ました.
理由はこうです.
私は今天気予報を動的に取りたいです.sinaで調べられたアプリがあります.
urlは:http://php.weather.sina.com.cn/iframe/index/w_c.php?code=js&day=0&city=上海です.
このurlはjs方法を返します.
内容は:
プログラムはこのインターフェースを呼び出して、その中のデータを解析してページに表示します.まずプログラムでこのurlを読みます.そして戻ったjsをそのままダイナミックに出力します.
プログラムインターフェースの名前:sinaweat.action?city=上海
この時、私のページではjqueryを使って私のactionを動的に呼び出してクエリの結果を私のページに表示する必要があります.
これは動的にjsをロードする必要があります.私のページは一つの都市を入力するごとに、sinaweather.action?city=入力都市の名来方法は対応都市のjsコードに戻ります.フォーラムではJsを動的にロードする方式は全部使っていますが、sinaの戻り値を取得できないjsコードに定義されているパラメータSW therを再度クリックしてもいいです.原因分析はjsが非同期でロードされているため、検索した上海をクリックしてもまだロードが完了していないかもしれません.この時sinaを呼び出して戻ってきたjsは問題があります.sinaで答えを見ました.
理由はこうです.
私は今天気予報を動的に取りたいです.sinaで調べられたアプリがあります.
urlは:http://php.weather.sina.com.cn/iframe/index/w_c.php?code=js&day=0&city=上海です.
このurlはjs方法を返します.
内容は:
(function(){var w=[];w[' ']=[{s1:' ',s2:' ',f1:'leizhenyu',f2:'leizhenyu',t1:'35',t2:'27',p1:'3-4',p2:'3-4',d1:' ',d2:' '}];var add={now:'2011-07-04 15:17:20',time:'1309763840',update:' 07 04 08:00 ',error:'0',total:'1'};window.SWther={w:w,add:add};})();//0
プログラムはこのインターフェースを呼び出して、その中のデータを解析してページに表示します.まずプログラムでこのurlを読みます.そして戻ったjsをそのままダイナミックに出力します.
プログラムインターフェースの名前:sinaweat.action?city=上海
この時、私のページではjqueryを使って私のactionを動的に呼び出してクエリの結果を私のページに表示する必要があります.
これは動的にjsをロードする必要があります.私のページは一つの都市を入力するごとに、sinaweather.action?city=入力都市の名来方法は対応都市のjsコードに戻ります.フォーラムではJsを動的にロードする方式は全部使っていますが、sinaの戻り値を取得できないjsコードに定義されているパラメータSW therを再度クリックしてもいいです.原因分析はjsが非同期でロードされているため、検索した上海をクリックしてもまだロードが完了していないかもしれません.この時sinaを呼び出して戻ってきたjsは問題があります.sinaで答えを見ました.
function fetch_js(url,dispose){
var Snode = document.createElement("script");
Snode.setAttribute("type", "text/javascript");
if(url.indexOf("?") != -1){
url += "&random=" + (new Date()).getTime();
}else{
url += "?random=" + (new Date()).getTime();
};
Snode[Snode.onreadystatechange === null ? "onreadystatechange" : "onload"] = function(){
if (this.onreadystatechange){
if (this.readyState != "loaded" && this.readyState != "complete") {return false;}
};
if(dispose){dispose()};// js ,
this[this.onreadystatechange ? "onreadystatechange" : "onload"] = null;
}
Snode.setAttribute("src", url);
document.getElementsByTagName("head")[0].appendChild(Snode);
}
function show(){
for(i in SWther.w){
var s1= SWther.w[i][0].s1;
var h_t1= SWther.w[i][0].t1;
var l_t2= SWther.w[i][0].t2;
var d1 = SWther.w[i][0].d1;
var p1 = SWther.w[i][0].p1;
var s = " :"+s1+", :"+h_t1+", :"+l_t2+","+d1+" "+p1+" ";
$("#weather").html(s);
}
}
function go(){
var city = $("#city").val();
alert(city);
var url = encodeURI("./sinaWeather.action?city="+city+"&r="+Math.random());
fetch_js(url,show);
}
:<input type="text" id="city" name="city" value=" "/>
<input type="button" name="c_l" onclick="go()" value=" ">
<div id="weather"></div>