作者timmy852111 (光⊙﹏⊙)
看板Ajax
標題[問題] function參數的傳遞
時間Fri Sep 16 20:11:07 2011
我的程式碼如下
<script>
function aa(xx,yy){
/*直接做完沒有回傳值*/
}
function bb(callback){
/*這裡有個使用.get取得資料的function 參考版上寫法如下*/
$.getJSON("
http://x.x.x.x/scantable.php?callback=?", function(msg){
callback(msg);
});
}
function cc(){
/*這裡需要使用bb()取得之資料*/
}
aa(xx,yy);
bb(function(result){
alert(result);//有顯示資料 可是我也不知道該存去哪裡= =
});
cc();
</script>
試了很多種方法 也試過直接用return 但是bb()裡面的資料一直傳不出來外面
主要是因為.getJson裡面的那個function讓我不知道值要傳到哪裡去QQ
麻煩各位大大了Orz
--
▄▄▄▄▄ ▄▄▄▄▄▄ ▄ ▄
▄ ▄▄▄▄ ▄
▄▄▄ ▄
▄ ▄ ▄▄▄▄▄▄▄
▄ ▄
▄▄ ▄▄
▄ ▄▄▄▄
▄
▄ ▄ ▄▄▄ くっくっくっ....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.109.100.195
1F:推 No:直接把cc帶進去不行嗎? bb(cc(result)); 09/16 20:28
2F:→ timmy852111:是可以 但是cc()做完後後面還有函式會用bb()的結果 09/16 20:52
3F:→ timmy852111:bb()算是去挖一個 整段程式都會用到的資料庫資料@@ 09/16 20:53
4F:推 aiyswu:我覺得很多aa bb cc會讓人稿不懂你要做什麼,而無法給你更 09/16 20:57
5F:→ aiyswu:好的建議。稿不懂你的須求可以被另一種簡單的方式解決@@ 09/16 20:58
6F:→ aiyswu: 好 09/16 20:58
好的 那我附上我的原始程式碼@@
body onload之後呼叫initialize()開始產生google map
function initialize() {
var myLatlng = new google.maps.LatLng(12,123);
var myOptions = {
zoom: 8,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
creatMaker(myLatlng,map);//呼叫creatMaker 沒問題
getData(function(result) {//呼叫getData取得資料 準備給後面的function使用
alert(result[1]['longitude']);
});
creatInfowindow();//這裡需要用到上面getData取得的資料
showTxt();//諸如此類會繼續用到getData取得的資料
}
function getData(callback){
$.getJSON("
http://x.x.x.x/scantable.php?callback=?",function(msg){
callback(msg);
});
}
※ 編輯: timmy852111 來自: 123.240.5.156 (09/16 21:16)
7F:推 s25g5d4:我的想法是在bb中var一個變數k 然後$.getJSON( ... , func 09/16 21:08
8F:→ s25g5d4:tion(msg){ k=callback(msg); }); return k; 09/16 21:09
好的我去試試看@@
※ 編輯: timmy852111 來自: 123.240.5.156 (09/16 21:18)
9F:推 B9: bb 執行到 $.getJSON 之後不會等結果回來就會繼續執行下一行 09/16 22:40
10F:→ B9: 所以 cc 一直沒資料很正常。 09/16 22:40
11F:推 B9: 然後等資料回來的時候才會執行帶進 bb 的 callback。 09/16 22:43
12F:推 B9: 所以呢,只要是需要依賴 getJSON 所取資料的 function 09/16 23:04
13F:→ B9: 都要延遲執行 09/16 23:04