這是一個異步調用,所以你不能像這樣返回。
您必須將代碼與data
一起移動到回調函數(function(data){}
)中。
function getAreas(){
$.post("/custom_html/weathermap.php",'',
function(data){
//do something with data here, such as calling another function
}, "json");
}
需要一段時間才能讓自己的頭腦進入異步思維方式,但是你會解決它。基本上,一旦請求被髮送,發送請求的代碼就完成了。該線程的執行將完成,並且您的瀏覽器將只是坐在那裏,不做任何事情。那麼$.post
調用將從weathermap.php
獲取數據,並且將調用您的回調函數。這開始了一個全新的執行線程。嘗試將它們看作兩個完全獨立的執行,一個pre-ajax調用和一個post-ajax調用。
下面是一些ASCII善良:
V
|
User clicks button
(or something else happens)
|
|
Your JavaScript runs
|
|
And eventually gets
to the ajax call -------> SERVER ------> Server sends data back
|
|
And your callback is run
on the data and execution
continues from here
|
|
V
不,是行不通的 - 'ret'是不確定的。 – Skilldrick 2010-08-24 11:52:50
不是匿名函數的範圍與getAreas的範圍相同嗎? [edit]顯然我錯了,對不起:) – 2010-08-24 11:54:11
匿名函數是一個回調函數,只會在'getAreas'返回後纔會調用。 – Skilldrick 2010-08-24 11:56:13