我有两个选项卡。
- 第一个选项卡是最重要的,它加载内容非常快。
- 第二个选项卡不是很重要,加载其内容(图表和摘要)需要太长时间。
因此,我不想同时加载两个选项卡的内容。理想情况下,我只需加载第一个选项卡的内容,当用户点击第二个选项卡时,我会按需加载相关内容。
为了做到这一点,我需要在服务器端知道第二个选项卡已被点击,然后将所有相关信息发送回客户端。
有什么好的想法吗?
我有两个选项卡。
因此,我不想同时加载两个选项卡的内容。理想情况下,我只需加载第一个选项卡的内容,当用户点击第二个选项卡时,我会按需加载相关内容。
为了做到这一点,我需要在服务器端知道第二个选项卡已被点击,然后将所有相关信息发送回客户端。
有什么好的想法吗?
href
设置为返回HTML内容的服务器端URL即可。
E.g:
<div id="my-tabs">
<ul>
<li><a id="myfirst-link" href="/Server/One">First</a></li>
<li><a id="mysecond-link" href="/Server/Another">Second</a></li>
</ul>
</div>
$('#my-tabs').tabs({
load: function (event, ui) {
switch (ui.tab.id) {
case 'myfirst-link':
break;
case 'mysecond-link':
break;
}
},
ajaxOptions: {
success: function(result) {
},
error: function (xhr, status, index, anchor) {
}
}
});
您需要在客户端和服务器端都进行更改。在服务器端(或代码后面),将该方法设置为静态并使用 [WebMethod] 属性进行装饰。
public partial class _Default : System.Web.UI.Page
{
...
[WebMethod]
public static void MethodToBeCalledUsingAjax(parameters)
{
//tab clicked logic goes here
}
...
}
var req = $.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Default.aspx/MethodToBeCalledUsingAjax",
data: "{}",
dataType: "json",
success: function (msg) {
}
});
使用 jQuery-UI Tabs: Content via AJAX
来填充选项卡内容。来源:http://jqueryui.com/demos/tabs/#ajax
以下是代码(从上面的链接中获取):
<script>
$(function() {
$( "#tabs" ).tabs({
ajaxOptions: {
error: function( xhr, status, index, anchor ) {
$( anchor.hash ).html(
"Couldn't load this tab. We'll try to fix this as soon as possible. " +
"If this wouldn't be a demo." );
}
}
});
});
</script>
<div class="demo">
<div id="tabs">
<ul>
<li><a href="#tabs-1">Preloaded</a></li>
<li><a href="ajax/content1.html">Tab 1</a></li>
<li><a href="ajax/content2.html">Tab 2</a></li>
<li><a href="ajax/content3-slow.php">Tab 3 (slow)</a></li>
<li><a href="ajax/content4-broken.php">Tab 4 (broken)</a></li>
</ul>
<div id="tabs-1">
<p>Sample Text</p>
</div>
</div>
</div>
<li><a href="ajax/content2.html">Tab 2</a></li>
- JSK NS你不应该等待用户点击第二个选项卡。相反,你可以在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) {
}
});
});