[英]jQuery.load() doesn't work with a defined function as a callback?
有人可以向我解釋為什么我使用以下代碼塊在競賽條件下奔跑:
$("#someid").load( "home.php", callback_function );
function callback_function()
{
//some jQuery.get() goes here
}
而不是這段代碼:
$("#someid").load( "home.php", function(){ callback_function(); } );
function callback_function()
{
//some jQuery.get() goes here
}
第一段代碼中的爭用條件是,加載完成后將不會執行callback_function()中的處理,而是似乎異步運行,並且會弄亂一些UI內容(此UI內容取決於jQuery.get()。返回)。 我是jQuery / JavaScript的新手,想知道為什么我需要顯式的“ function(){callback_function();}”。 謝謝!
更新
看來您的問題是關於使通話異步還是同步。 如果需要異步ajax調用,我通常會重構代碼,但是您應該能夠通過使用基本jQuery ajax來解決此問題。
$.ajax({
// will not work for jsonp or cross domain requests, will force success to run before
// other code
async: false,
url: "load.php",
dataType: "html",
success: function(response) {
$("#some_id").html(response);
}
});
看起來您的回調函數在被使用之前並未聲明為一個函數。
試一下:
$("#someid").load( "home.php", callback_function );
function callback_function()
{
//some jQuery.get() goes here
}
我建議使用JSLint(JSLint.com),因為它將檢查您的語法並查找這些錯誤。
像這樣聲明函數
function callback_function(){
//some jQuery.get() goes here
}
要么
var callback_function = function(){
//some jQuery.get() goes here
}
然后試試這個
$("#someid").load( "home.php",null, callback_function );
將回調參數作為第三個參數傳遞,以避免與jquery加載API混淆(很抱歉,無法獲得確切的單詞:))。
請參閱負載文檔 ,
Javascript或任何腳本語言都可以按詞法執行代碼。 我的意思是說它沒有主要的排序方法。
因此,在第一個代碼段中,將調用load函數,並為其分配一個尚未聲明的函數。 在第二個代碼片段中,該函數被內聯到方法負載中,因此它不會失敗。
如果您先定義函數,然后調用load,則您的第一個代碼段也應該工作。
function callback_function(){
}
$("#someid).load("home.php", callback_function);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.