谁能告诉我如何使用 Javascript/JQuery 在特定时间间隔内轮询 webMethod ?我尝试了 setInterval 和 setTimeOut 但没有一个对我有用。我的应用程序根据用户的请求生成报告。因为报告生成需要 10-15 分钟,所以我不想阻止 UI 线程,所以我在 javascript 的按钮点击时创建了一个 reportID,并使用 _dopostback 调用按钮点击事件并将报告 ID 传递给它。C# 按钮单击事件使用 Delegate/BeginInvoke 调用 generate_report() 函数,现在我想轮询我创建的 WebMethod 以获取报告......这是一个代码片段......
$("#btn1").click(function () {
var ReportID = generateReportID();
__doPostBack("<%= btnGenerate.UniqueID %>", ReportID);
IntervalID = setInterval(function () { Poll(ReportID); }, 30000);
});
function Poll(id) {
$.ajax({
type: "POST",
url: "Default.aspx/WebMethod",
data: "{'ReportID','" + id + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
// Check if report is ready
// If not poll again after 30 secs
// If report is ready Get the Report and clearInterval
},
failure: function (error) {
}
});
};
[WebMethod]
public static string WebMethod(string ReportID)
{
if (ResultSet.ContainsKey(int.Parse(ReportID)))
{
return "Ready";
}
else
{
return "NotReady";
}
}
因此,在按钮上单击如何在每 30 秒后开始轮询此 Web 方法,直到报告“就绪”并在就绪后清除间隔。??