2

我有一个将通过加载的用户控件

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或类似的东西。我宁愿不使用更新面板,但如果这是完成此操作的唯一方法,那么这就是我将使用的方法。

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

4

3 回答 3

1

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

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

于 2013-04-25T15:29:58.860 回答
0

我通过在加载和显示 ajax 内容后触发的自定义事件解决了类似的问题。

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

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

并在您的 document.ready 脚本中捕获它:

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

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

于 2013-04-25T15:26:59.300 回答
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.
  }
});
});
于 2013-04-25T15:30:54.523 回答