单击jQuery选项卡时如何启动c#过程?
我有两个标签单击jQuery选项卡时如何启动c#过程?,c#,jquery,asp.net,jquery-ui,webforms,C#,Jquery,Asp.net,Jquery Ui,Webforms,我有两个标签 第一个是最重要的,它加载内容非常快 第二个不是很重要,加载内容(图表和摘要)需要很长时间 因此,我不想同时加载两个选项卡的内容。理想情况下,我只加载第一个选项卡内容,当用户单击第二个选项卡时,我将加载其相关内容(在demmand上) 为了做到这一点,我需要在服务器端知道第二个选项卡已被单击,然后将所有相关信息发送回客户端 有什么想法吗?jQuery UI选项卡控件支持填充的选项卡。只需为选项卡链接设置href,该选项卡链接将返回HTML内容的服务器端URL 例如: $
- 第一个是最重要的,它加载内容非常快
- 第二个不是很重要,加载内容(图表和摘要)需要很长时间
有什么想法吗?jQuery UI选项卡控件支持填充的选项卡。只需为选项卡链接设置
href
,该选项卡链接将返回HTML内容的服务器端URL
例如:
$(“#我的标签”).tabs({
加载:函数(事件,ui){
开关(ui.tab.id){
案例“我的第一个链接”:
打破
“我的第二个链接”案例:
打破
}
},
ajaxOptions:{
成功:功能(结果){
},
错误:函数(xhr、状态、索引、锚定){
}
}
});
如果需要在选项卡完成加载后运行任何Javascript,则可以使用
load
事件。如果您需要全局处理每个ajax调用的任何成功或错误,那么您可以使用ajaxOptions
使用jQuery UI选项卡:内容通过ajax
填充选项卡。资料来源:
下面是代码(从上面的链接抓取):
$(函数(){
$(“#制表符”)。制表符({
ajaxOptions:{
错误:函数(xhr、状态、索引、锚定){
$(anchor.hash).html(
“无法加载此选项卡。我们将尝试尽快修复此问题。”+
“如果这不是演示的话。”);
}
}
});
});
示例文本
为此,您必须在客户端和服务器端进行更改。
在服务器端(或代码隐藏),将方法设置为静态,并使用[WebMethod]属性对其进行修饰
public partial class _Default : System.Web.UI.Page
{
...
[WebMethod]
public static void MethodToBeCalledUsingAjax(parameters)
{
//tab clicked logic goes here
}
...
}
在客户端,在tab click函数中,使用jQueryAjax,如下所示
var req = $.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Default.aspx/MethodToBeCalledUsingAjax",
data: "{}",
dataType: "json",
success: function (msg) {
}
});
此ajax调用应按需通知服务器端已单击选项卡,并相应地处理代码
请忽略样式设置…我是stackoverflow的新手:)虽然我还没有找到在单击jQuery选项卡时如何在codebehind中触发事件,但是可以使用
SelectedTabChanged
事件处理程序来执行此操作,您不应该等待用户单击第二个选项卡。相反,您可以做的是填写document.onReady事件上的第一个选项卡。它应该使用请求的ajax获取第一个选项卡的内容
获得第一个ajax请求的回复后,在回复回调上,为第二个选项卡发出新的请求。这样,当用户处理第一个选项卡时,它将在后台加载,当他/她切换到第二个选项卡时,它也将准备就绪
在文档中使用此选项
$(document).ready(function() {
var req = $.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Default.aspx/MethodToBeCalledUsingAjax",
data: "{}",
dataType: "json",
success: function (msg) {
}
});
});
在success:函数中,放入用于加载第二个选项卡的代码。单击
,因此,您的意思是,用户每次单击选项卡时,页面都将被加载,对吗?好主意。。。不幸的是,我需要从该webmethod在我的aspx中填充asp.net图表控件,这是不可能的,因为静态关键字是正确的!然后我想,除非您计划使用完整的javascript图表控件,如Highcharts或Raphaël,否则不会有简单的方法。。。不幸的是,我需要从该webmethod在我的aspx中填充asp.net图表控件,这是不可能的,因为静态关键字我看不到填充图表控件有任何问题。如果你可以发布一些代码,我可以帮你解决这个问题,我无法从webmethod访问任何控件。。。无论如何,我感谢你的帮助
var req = $.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Default.aspx/MethodToBeCalledUsingAjax",
data: "{}",
dataType: "json",
success: function (msg) {
}
});
$(document).ready(function() {
var req = $.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Default.aspx/MethodToBeCalledUsingAjax",
data: "{}",
dataType: "json",
success: function (msg) {
}
});
});