2010-10-20 86 views
15

我已經看到很多問題和解決方案,像這樣的問題,但沒有爲我工作。我有這個:JQuery .load()回調函數

function() { 
    $("#bdiv").load("bosses.php #icc10n",function(){ 
     return $("#bdiv").html(); 
    }); 
} 

但它不工作。爲了澄清,我想將內容加載到#bdiv,然後返回#bdiv的內容。但是似乎$("#bdiv").html()在內容加載之前正在返回,即使我已將它放入回調函數中。

+0

你能顯示完整的代碼嗎?爲什麼這是一個匿名函數? – 2010-10-20 01:06:29

回答

37
$("#bdiv").load("bosses.php #icc10n",function(data){ 
    // use the data param 
    // e.g. $(data).find('#icc10n') 
}); 
+1

謝謝,現在工作愉快! – Dan 2010-10-20 01:13:15

0

你不能那樣做。

AJAX是異步,這意味着您的函數將在服務器發送響應之前返回。
您需要使用回調將此值傳遞給呼叫者,方式爲$.load

+0

@Onkelborg:他需要通過自己的回調來回報價值。 – SLaks 2010-10-20 00:57:00

+0

當函數被聲明時,.html()被評估,而不是被調用的時候,對嗎? – slezica 2010-10-20 01:03:44

+0

@Santiago:完全錯誤。 return語句從內部回調方法返回;這個返回值被jQuery忽略。外部函數立即返回。 – SLaks 2010-10-20 02:25:33

1

據我知道你不能在$阿賈克斯(),$。員額(),$。獲得(),等方法的回調函數使回報聲明。但是,您可以將「數據」值存儲在函數外聲明的變量中,然後在執行回調函數時設置該變量的值。還有其他各種選擇。