2013-04-25 50 views
1

我有一個用戶控件,這將加載通過負載的用戶控制和擁有jQuery的文件準備好功能

public static string RenderControl(Control control) 
{ 
    var controlWriter = new StringWriter(); 
    var htmlWriter = new Html32TextWriter(tw); 
    control.RenderControl(writer); 
    htmlWriter.Close();    
    return controlWriter.ToString(); 
} 

AJAX用來寫HTML

$('#testDiv').html(result.d); 

這是通過Ajax叫帖子。它加載用戶控件罰款,但由於javascript文檔加載已經被解僱,我不能使用jquery的document.Ready。

我的情況是我需要動態加載用戶控件,並讓jquery document.ready激發或其他等價物。我寧願不使用更新面板,但如果這是完成此操作的唯一方法,那麼我將使用這個方法。

什麼是我的問題的優雅解決方案?

回答

1

當ajax調用完成時,您可以使用內置的jQuery ajaxStop事件觸發。

http://api.jquery.com/ajaxStop/

+0

很酷,我不知道該事件還。 – griffla 2013-04-25 15:35:18

+0

如果我有一個HTML頁面渲染,然後渲染更多的HTML裏面的ajax後會在主html中的HTML渲染訪問ajaxStop? – gh9 2013-04-25 15:35:21

+1

@ gh9:我不確定你在問什麼。一旦你註冊了一個ajaxStop回調函數,它會被頁面上的任何ajax請求觸發 - 即使是由動態加載的內容觸發的ajax請求。 – 2013-04-25 15:46:03

0

我解決了類似的一個自定義事件,在ajax內容被加載和顯示後觸發。

觸發Ajax功能裏面的事件,後負荷和顯示:

$(document).trigger('ajaxLoadCallback'); 

,趕上它在你的document.ready腳本:

$(document).on('ajaxLoadCallback', function() { 
    // Your ready functions 
} 

如果你做的一切創造一個功能,應該在document.ready之後執行,而不是在document.ready上和調用定製事件之後調用此函數(例如readyFunctions())。

0
public partial class Default : Page 
{ 
    [WebMethod] 
    public static string GetDate() 
    { 
    return DateTime.Now.ToString(); 
    } 
} 

$(function(){ 
$.ajax({ 
    type: "POST", 
    url: "Default.aspx/GetDate", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
    // Do something interesting here. 
    } 
}); 
}); 
+0

這就是我如何調用webMethod,但這有問題在頁面加載後插入Document.Ready JavaScript,因此JavaScript不運行。 – gh9 2013-04-25 15:32:02

+0

你可以使用成功的方法,而不是document.ready – Roar 2013-04-25 15:34:27

+0

我不喜歡這樣做,因爲它將usercontrol關聯到調用頁面。我無法在不改變調用頁面代碼的情況下即時切換用戶控件。 – gh9 2013-04-25 15:36:45