此代碼過於模糊: var raw_data = ajax_fetch_data();
通常是這樣的:
// url = ...
// data = ...
create_ajax_request(url, data, callback);
// This will continue to execute like normal
// ...
// ...
// ...
// Now, in a differnt part of the code:
function callback() {
// Sometime later, when AJAX returns data, this is called.
}
所以基本上你有兩個線程:主程序,你的「開始」的請求,並請求完成時調用回調函數。這仍然忽略了細節。
如果你想SJAX(壞的縮寫syncronous的JavaScript & XML),那麼你可以使用類似的jQuery:
var result = null;
$.ajax({
aync: false,
data: data,
url: url,
success: function(data) {
result = data;
}
});
// result is populated before $.ajax() moves on, so you can use it right after
console.log('result: ' + result);
然而,這種執行忙等待(即瀏覽器被卡住/鎖定,直到數據進入...可能是幾毫秒,可能是一分鐘,誰知道)。所以這隻能在必要時使用。如果您只想獲取數據並進行處理,請使用回調。
// Call this to start a request
function startRequest() {
data = ...
create_ajax_request(url, data, continueRequest);
}
// This is called once we have the data
function continueRequest(data) {
alert(data);
}
這是比較典型的AJAX程序。
不要告訴他。現在他要回去接受所有問題的隨機回答。 – 2009-10-10 03:20:09
啊,對不起所有人。我不知何故忽略了你應該接受答案的事實。思考答案的質量只是反映了他們的選票數量。我會確保回去接受我的問題的正確答案。 – makeee 2009-10-10 03:28:07