使用ajax动态加载用户控件,并具有jquery文档准备功能

本文关键字:jquery 文档 功能 动态 ajax 加载 用户 控件 使用 | 更新日期: 2023-09-27 18:11:04

我有一个将通过

加载的用户控件
public static string RenderControl(Control control)
{
    var controlWriter = new StringWriter();
    var htmlWriter = new Html32TextWriter(tw);
    control.RenderControl(writer);
    htmlWriter.Close();            
    return controlWriter.ToString();
}
用于编写html的AJAX
$('#testDiv').html(result.d);

通过ajax Post调用。它可以很好地加载用户控件,但由于javascript文档加载已经启动,我不能使用jquery的document. ready .

我的情况是我需要动态加载一个用户控件,并有jquery文档。ready fire,或其他等价的。我宁愿不使用updatepanel,但如果这是完成此任务的唯一方法,那么我将使用它。

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

使用ajax动态加载用户控件,并具有jquery文档准备功能

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

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

我用一个自定义事件解决了类似的问题,该事件在ajax内容加载并显示后触发。

触发ajax函数内部的事件,加载后显示:

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

并在文档中捕获它。现成的脚本:

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

如果你为文档后应该执行的所有内容创建一个函数。准备好之后,您可以在文档上调用此函数(例如readyFunctions())。

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.
  }
});
});