我有以下jquery,只要点击一个名为btnExport的输入按钮,就会在网页上每隔10秒注册一个计时器间隔。
if ($) {
$(document).ready(function () {
$("input[id$='btnExport']").click(function ($e) {
// javascript timer function
window.setInterval(ExportProgressCheck, 10000);
});
function ExportProgressCheck() {
$.ajax({
type: "POST",
url: "DMZ_Export.aspx/GetExportProgress",
contentType: "application/json; charset=utf-8",
data: "",
dataType: "json",
success: AjaxSuccess,
error: AjaxFailed
});
}
});
}
但是,在某些情况下,我需要定时器间隔才能在加载页面加载后立即开始计时。我的问题是我不知道如何在代码隐藏的页面加载事件中执行此操作。从理论上讲,它会像...那样......
protected void Page_Load(object sender, EventArgs e) {
if (!Page.IsPostBack) {
if (IsExportInProgress()) {
// Register the timer interval now!! How do I do this??
// window.setInterval(ExportProgressCheck, 10000);
}
}
}
}
我尝试通过注册启动脚本来实现这一点,但它不喜欢脚本,因为它不知道ExportProgressCheck是什么......
ClientScriptManager cs = Page.ClientScript;
cs.RegisterStartupScript(cstype, csname1,
"<script type=\"text/javascript\">window.setInterval(ExportProgressCheck, 10000);</script>",
false);
对此有任何帮助将非常感谢!谢谢!
答案 0 :(得分:1)
您正在$(document).ready()
内发出代码,即一旦加载dom(加载页面),代码就会执行。
您只需在特定条件下拨打setInterval()
功能以外的click
:
if ($) {
$(document).ready(function () {
if(condition)
window.setInterval(ExportProgressCheck, 10000);
$("input[id$='btnExport']").click(function ($e) {
// javascript timer function
window.setInterval(ExportProgressCheck, 10000);
});
function ExportProgressCheck() {
$.ajax({
type: "POST",
...
答案 1 :(得分:0)
你走在正确的轨道上。
一些要点
您无需添加&lt; script ..&gt;调用RegisterStartupScript时的标记,只需将true指定为最后一个参数。
当window.setInterval行命中时,您的ExportProgressCheck似乎尚未定义。您可以通过查看源代码,查看函数的定义位置以及分配调用引用它的位置来验证这一点。 可能的原因:形成不良的js可能会破裂。页面加载后是否可以使用该功能?你可以打开一个javascript窗口并调用它吗?
注意到$(document).ready line ... yes。将在整个BODY元素被解析后执行。你需要从那个ready子句中取出ExportProgressCheck函数定义。这样,它可用于您的启动脚本
注册启动脚本应该将您的调用放在段的底部。你应该加载所有脚本。检查来源以确定什么是不明智的
答案 2 :(得分:0)
通过另一条路线将其拉下来。我使用jQuery的$ get函数来命中另一个aspx页面来获取条件值。
if ($) {
$(document).ready(function () {
$.get("ExportInProgCheck.aspx", function (response) {
if (response != '')
window.setInterval(ExportProgressCheck, 10000);
});
});
}
如果满足条件,ExportInProgCheck.aspx只返回'true',此时window.setInterval被设置。