通过jQuery AJAX加载ASP.Net用户控件
我有一些小模块(比如iGoogle),它们当前通过调用LoadUserControl方法的页面加载,并将该控件加载到占位符中。我需要将该实现切换到通过jQueryAjax请求加载控件。目前的问题在于,当我执行ajaxget时,我可以通过将模块附加到内容中来加载模块,但是没有任何功能可以在正常加载的控件上工作。例如,当我在DDL上选择不同的选项时,页面将刷新,并且没有任何更改。我怀疑是因为当我通过AJAX执行加载时,这些方法没有被绑定。此外,当我使用此方法时,我的flash内容不会被加载 我是做错了什么,还是有更好的解决办法通过jQuery AJAX加载ASP.Net用户控件,asp.net,jquery,ajax,Asp.net,Jquery,Ajax,我有一些小模块(比如iGoogle),它们当前通过调用LoadUserControl方法的页面加载,并将该控件加载到占位符中。我需要将该实现切换到通过jQueryAjax请求加载控件。目前的问题在于,当我执行ajaxget时,我可以通过将模块附加到内容中来加载模块,但是没有任何功能可以在正常加载的控件上工作。例如,当我在DDL上选择不同的选项时,页面将刷新,并且没有任何更改。我怀疑是因为当我通过AJAX执行加载时,这些方法没有被绑定。此外,当我使用此方法时,我的flash内容不会被加载 我是做错
$.ajax({
url: '/modules/UserModules.aspx?CID=12345',
type: "GET",
dataType: "html",
success: function(data) {
$('#column1').append($(data).find('div#lm li'));
$('#column2').append($(data).find('div#cm li'));
$('#column3').append($(data).find('div#rm li'));
alert('Load was performed.');
}
});
当您发回服务器时,服务器不知道您的用户控件,因为它是动态添加到页面的。实际上,您需要呈现UC HTML,然后将部分呈现的HTML添加到页面中
我建议不要发回服务器,而是在使用DDL进行选择时使用jQuery来检索任何数据。我不确定是否看到使用UC进行此操作的实用程序。有很多方法可以做到这一点。正如Jamie所说,您可以拥有一个使用web方法的plain.aspx页面。asmx页面。您也不能使用web方法,只需像使用php或经典ASP那样直接编写字符串结果并对其进行处理(但这不应该是您的首选!) 但是,您可以从中获得的最重要的东西是调试。在UC代码中添加断点以跟踪服务器端。使用Firebug:打开它,选择console并观察您的GET请求是否真的在做它们需要做的事情。现在,您很少需要警报进行调试