当 ASP.net 用户控件访问 aspx 页面时,我尝试触发 Javascript 调用。
该网站允许用户向页面添加用户控件(类似于向页面添加小部件等,如 google widgets)。但是,当添加控件时,javascript 不会触发,只有刷新页面时才会触发 javascript。如果下次访问该网站并且控件仍然存在,JavaScript 也会触发。
我是否需要使用 RegisterClientScript 方法来注册控件加载或 OnPreRender 事件上的调用 (setAutoTimer()
)。
在用户控件中,我在 ascx 文件的开头有以下内容:
<script language="javascript" type="text/javascript">
$(document).ready(function () {
if ($("#alarmList").length) {
setAutoTimer();
getData();
}
});
function setAutoTimer() {
setInterval(getData, 10000);
}
function getData() {
$.ajax({
type: "POST",
url: "Service.asmx/getListData
data: "{'inverterid': '" + "1'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
AjaxSucceeded(msg);
},
error: AjaxFailed
});
}
function AjaxSucceeded(result) {
$("#alarmList").empty();
$("#alarmsListTemplate").tmpl(result.d)
.appendTo("#alarmList");
}
function AjaxFailed(result) {
alert(result.status + ' ' + result.statusText);
}
</script>
最佳答案
$(文档).ready(function () {});仅在发生完整回发后运行(当重新加载 DOM 时)。我假设您通过另一个 AJAX 方法添加控件(在这种情况下 document.ready 将不会触发。您可以使用 AJAX 框架事件 pageLoad(sender, args) ,它将在回调和回发后触发。您可以像这样使用它所以..
function pageLoad(sender, args) {
if (args.get_isPartialLoad()) {
setAutoTimer();
getData();
}
}
关于jquery - 当 asp.net 用户控件加载时,javascript 不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5327842/