Это замечательная и конкретная статья на эту тему.
Для меня работает следующий код.
У меня есть страница, которая асинхронно обрабатывает файл Excel; во время обработки функция EsperarFinDelCargue () опрашивает PageMethod , называемый CargueFinalizo ()
каждую секунду, чтобы увидеть, если обработка закончена. По окончании обработки происходит перенаправление.
OnCallFinalizoComplete - это функция обратного вызова для вызова PageMethod, поэтому есть место, где вам нужно использовать полученный объект.
<script type="text/javascript">
function EsperarFinDelCargue()
{
PageMethods.CargueFinalizo(OnCallFinalizoComplete);
if($('#<%=this.hidCargueFinalizado.ClientID %>').val() == "SI")
{
document.location = "CargarPanelHCP.aspx";
}
else
{
var t=setTimeout("EsperarFinDelCargue()",1000);
}
}
function OnCallFinalizoComplete(result,contexto,CargueFinalizo)
{
$('#<%=this.hidCargueFinalizado.ClientID %>').val(result);
}
</script>
А вот код PageMethod в aspx:
[System.Web.Services.WebMethod]
public static string CargueFinalizo()
{
//Whatever you need
return HttpContext.Current.Session["ResultadoCarguePanel"] != null ? "SI" : "NO";
}