使用ajax动态加载用户控件并具有jquery文档就绪功能

时间:2013-04-25 15:21:26

标签: c# jquery ajax webforms

我有一个将通过

加载的用户控件
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 Post调用的。它加载用户控件很好,但由于javascript文档加载已经触发,我不能使用jquery的document.Ready。

我的情况是我需要动态加载用户控件并拥有jquery document.ready fire 或一些等价物。我宁愿不使用更新面板,但如果这是完成此任务的唯一方法,那么这就是我将要使用的。

我的问题的优雅解决方案是什么?

3 个答案:

答案 0 :(得分:1)

您可以使用内置的jQuery ajaxStop事件在ajax调用完成时触发。

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

答案 1 :(得分:0)

我解决了与加载和显示ajax内容后触发的自定义事件类似的事情。

在加载并显示之后触发ajax函数内的事件:

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

并在你的document.ready脚本中抓住它:

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

如果为document.ready之后应该执行的所有内容创建函数,则可以在document.ready上和触发自定义事件之后调用此函数(例如readyFunctions())。

答案 2 :(得分: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.
  }
});
});