我有迷你模块(想想iGoogle),这些模块目前通过调用LoadUserControl方法的页面加载,并将该控件加载到PlaceHolders中。我需要将该实现切换为通过jQuery AJAX请求加载控件。目前的问题在于,当我执行AJAX Get时,我可以通过将模块附加到内容来加载模块,但是没有任何功能可以在正常加载的控件上运行。例如,当我在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.');
}
});
答案 0 :(得分:2)
当您回发到服务器时,服务器不知道您的用户控件,因为它已动态添加到页面中。实际上,您渲染UC HTML,然后将部分呈现的HTML添加到您的页面。
我建议您在使用DDL进行选择时,不要回发到服务器并使用jQuery使用Page Method或web method检索任何数据。
答案 1 :(得分:0)
我不确定我是否看到使用UC的实用程序。有很多方法可以做这种事情。像Jamie说的那样,你可以拥有一个使用web方法的简单的.aspx页面。一个asmx页面。您也可以不使用Web方法,只需像使用php或经典ASP一样,直接编写字符串结果并处理它们(不应该是您的第一选择!)。
但是你可以从中获得的最重要的是调试。在UC代码中设置一个断点来跟踪服务器端。使用Firebug:打开它,选择控制台并观察您的GET请求是否实际上正在执行他们需要的操作。现在,您很少需要警报来进行调试。