作者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