我试图在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>
答案 0 :(得分:4)
$(document).ready(function(){});只会在完全回发后(重新加载DOM时)运行。我假设您通过另一个AJAX方法添加控件(在这种情况下document.ready将不会触发。您可以使用AJAX框架事件pageLoad(sender,args),它将在回调和回发后触发。您可以像使用它一样使用它所以...
function pageLoad(sender, args) {
if (args.get_isPartialLoad()) {
setAutoTimer();
getData();
}
}
答案 1 :(得分:0)
您可以从将页面添加到页面的javascript中调用该方法。
e.g。
function AjaxSucceeded(result) {
$("#alarmList").empty();
$("#alarmsListTemplate").tmpl(result.d)
.appendTo("#alarmList");
setAutoTimer();
}