Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单击jQuery选项卡时如何启动c#过程?_C#_Jquery_Asp.net_Jquery Ui_Webforms - Fatal编程技术网

单击jQuery选项卡时如何启动c#过程?

单击jQuery选项卡时如何启动c#过程?,c#,jquery,asp.net,jquery-ui,webforms,C#,Jquery,Asp.net,Jquery Ui,Webforms,我有两个标签 第一个是最重要的,它加载内容非常快 第二个不是很重要,加载内容(图表和摘要)需要很长时间 因此,我不想同时加载两个选项卡的内容。理想情况下,我只加载第一个选项卡内容,当用户单击第二个选项卡时,我将加载其相关内容(在demmand上) 为了做到这一点,我需要在服务器端知道第二个选项卡已被单击,然后将所有相关信息发送回客户端 有什么想法吗?jQuery UI选项卡控件支持填充的选项卡。只需为选项卡链接设置href,该选项卡链接将返回HTML内容的服务器端URL 例如: $

我有两个标签

  • 第一个是最重要的,它加载内容非常快
  • 第二个不是很重要,加载内容(图表和摘要)需要很长时间
因此,我不想同时加载两个选项卡的内容。理想情况下,我只加载第一个选项卡内容,当用户单击第二个选项卡时,我将加载其相关内容(在demmand上)

为了做到这一点,我需要在服务器端知道第二个选项卡已被单击,然后将所有相关信息发送回客户端


有什么想法吗?

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:函数中,放入用于加载第二个选项卡的代码。

单击
  • 项上的jquery事件,然后进行ajax调用。这种方法不会同时加载两个页面吗?或者,这会根据用户单击的选项卡加载每个页面吗?它会在单击每个选项卡时加载相应的页面。加载完成后,加载事件将触发,您可以检查引发加载事件的链接,并运行适合该选项卡的JavaScript。这种方法不会同时加载两个页面吗?或者这将根据用户单击的选项卡加载每个页面?这将根据用户单击的选项卡加载每个页面。加载的页面取决于给定选项卡链接中的href值:
  • ,因此,您的意思是,用户每次单击选项卡时,页面都将被加载,对吗?好主意。。。不幸的是,我需要从该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) {
                }
            });
    });