如标题所示,我编写了一个ajax函数,该函数应滚动到用户在重定向之前所处的位置.
我为测试场景写了一个警报,它确实触发了,但是滚动不断回到顶部,我在这里做错了吗?
$.ajax({
type: "GET",
url: "AdminListUsers.aspx?column=disabled&direc=False&a=chstat&z=+",
success: function loadDoc() {
window.scrollTo(window.pageXOffset, window.pageYOffset);
}
});
C#:
var toggleUrl = "AdminListUsers.aspx?column=" + (IsClicked.FirstOrDefault().Key ?? "Name") + "&direc=" + (IsClicked.FirstOrDefault().Value) + "&a=chstat&q=" + id.ToString() + "&d=" + disabled + "&z=" + Server.UrlEncode(txtSearchFor.Text);
var hl = new HyperLink();
hl.Text = status;
hl.Style.Add(HtmlTextWriterStyle.Color, (disabled ? "red" : "green"));
hl.NavigateUrl = toggleUrl;
hl.Attributes.Add("onclick", "loadDoc();return true;");
cell.Controls.Add(hl);
tr.Cells.Add(cell);
解决方法:
问题是因为它实际上是在导航到超链接中指定的链接.然后,它也尝试执行ajax请求.
如果要使用ajax,则无需指定navigationURL,并且脚本可以禁止超链接的默认行为.否则,您将同时获得整页刷新和jQuery ajax请求.由于您已经安装了jQuery,因此您可以像下面这样最轻松地完成此操作:
C#:
var hl = new HyperLink();
hl.Text = status;
hl.ID = "myLink";
hl.Style.Add(HtmlTextWriterStyle.Color, (disabled ? "red" : "green"));
hl.NavigateUrl = "#";
cell.Controls.Add(hl);
tr.Cells.Add(cell);
JS(使用不显眼的事件处理):
$(document).ready(function() {
$("#<%= myLink.ClientID %>").click(function(event) {
event.preventDefault(); //stop the normal behavIoUr of the link
$.ajax({
type: "GET",
url: "AdminListUsers.aspx?column=disabled&direc=False&a=chstat&z=+",
success: function() {
window.scrollTo(window.pageXOffset, window.pageYOffset);
}
});
});
});
这将阻止链接导致整个页面被重定向,并且仅允许通过ajax加载内容.
注:如果要在一个表中创建超链接的多个实例,则需要使用类而不是ID来使jQuery定位它.
但是,我会问“ AdminListUsers.aspx?column = disabled& direc = False& a = chstat& z =”实际上返回了什么.通常,aspx页面返回整个HTML页面,其中包括< html> ;、< body>标记等-如果将其放在另一个元素(例如< div>)中,则会使您的页面无效-您不能嵌套< html>标签.如果要使用ajax,则应使用WebMethod(或其他类型的Web服务)仅返回实际上应插入到元素中的HTML.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。