누구나 Javascript/JQuery를 사용하여 특정 간격으로 webMethod를 폴링하는 방법을 알 수 있습니까? 나는 setInterval & setTimeOut을 시도했지만 그들 중 누구도 나를 위해 일하고 있지 않다. 내 응용 프로그램은 사용자의 요청에 대한 보고서를 생성합니다. 보고서 생성이 10-15 분이 걸리므로 UI 스레드를 차단하고 싶지 않아서 자바 스크립트에서 버튼 클릭으로 reportID를 만들고 _dopostback을 사용하여 버튼 클릭 이벤트를 호출하고 reportID를 전달해야합니다. C# 버튼 클릭 이벤트가 위임/BeginInvoke를 사용하여 generate_report() 함수를 호출하고 지금은 내가 보고서를 얻을 중위 만든의 WebMethod에 폴링 할 ... 여기에 버튼 클릭에 코드 조각 .. 그래서Jquery/Javascript를 사용하여 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 초마다이 웹 방법으로 투표를 시작하고 한 번 준비가 끝난 후 간격을 지우려면 어떻게합니까? ??
감사합니다 확인하고 응답 할 것이다 Safjanowski @Krzysztof 당신의 도움에 대한 톤 ... 그렇게된다면 ... :) –
는 ... 제어하기 전에 pollWebServer()에 돌아 오기 작동하지 않습니다 결과는 checkResult()의 ajax 호출에서 검색됩니다. –