这是一段在页面没有任何 Ajax 时可以正常工作的代码块
if (sStat > "") {
str2 = "Dist.aspx?statProducer="; str2 += document.all.txtHiddenStat.value;
var distWindow;
if (document.all.ddlWindows.value == "new") {
distWindow = window.open(str2);
}
else {
distWindow = window.open(str2, "PeriscopeView");
distWindow.focus();
}
return false;
输入收集在此 Ajax TabContainer 内的“advSearch”TabPanel 内的文本框中。搜索按钮在单击时会调用 doValidate() JavaScript 方法。上面的代码存在于该方法中。
<asp:ToolkitScriptManager ID="_toolkitScriptManager1" runat="server" EnablePageMethods="True">
</asp:ToolkitScriptManager>
<form id = "frmSearch" onsubmit="return(doValidate());" method="post" runat="server">
<asp:TabContainer ID="AdvOrBasicSearch" runat="server" ActiveTabIndex="0">
<div id="tabs_header">
<span id="tab1" class="ajax_tab_active">
<asp:TabPanel ID="basicSearch" runat="server" HeaderText="Basic Search">.../asp:TabPanel>
</span>
<span id="tab2" class="ajax_tab_active">
<asp:TabPanel ID="advSearch" runat="server" HeaderText="Advanced Search">...</asp:TabPanel>
</span>
</div>
</asp:TabContainer>
</form>
现在页面上正在使用 Ajax TabContainers,第二个窗口将打开,但它只是挂起/超时。
编辑
以为我会添加到这篇文章中,因为我一直在逐步检查代码以尝试找出问题所在。在该 JavaScript 块执行后,Visual Studio 将在“return false”代码行之后导航到具有以下标题的页面:
// Name: MicrosoftAjax.debug.js
// Assembly: AjaxControlToolkit
// Version: 4.1.60623.0
// FileVersion: 4.1.60623
// (c) 2010 CodePlex Foundation
这是程序挂起的地方。我用了大约 5 分钟的时间逐步完成了此页面上正在执行的代码,并且看起来几乎 7000 多行代码中的每一行都将被调用。有没有办法让 TabContainer 跳过它在这里做的任何事情?