Непонятно по какой причине не вызывается клиентская процедура, которая передается третьим параметром
при вызове ClientScript.GetCallbackEventReference
Делаю так:
На сервер запрос приходит и обрабатывается нормально. А вот на клиенте обратная функция aaa не вызывается
Может есть какие тонкости?
И еще, где можно посмотреть исходник js-функции WebForm_CallbackComplete — собственно она и должна вызывать мою функцию...
проблемы с ICallbackEventHandler
От:
Аноним
Дата:
25.01.06 12:41
Оценка:
И еще, где можно посмотреть исходник js-функции WebForm_CallbackComplete — собственно она и должна вызывать мою функцию...
В HTML коде сформированной страницы будет примерно такая строка
<script src="/PROJECT_1/WebResource.axd?d=MIvyfxmx8raXhtLZLD2DrRbvfQvG1_rtkJY0S-clwrE1&t=632707849651578606" type="text/javascript"></script>
просто стяните браузером.
N_C>На сервер запрос приходит и обрабатывается нормально. А вот на клиенте обратная функция aaa не вызывается N_C>Может есть какие тонкости?
Нашел. Тонкость оказалась в том, что я применял одну из реализаций страницы ожидания с DIV,
который в OnInit флашился на клиента, а в конце загрузки скрывается. Оказалось, что при обработке
callback'а он опять-же флашился на клиента и парсер на клиентской стороне неправильно определял
признак безошибочного окончания вызова. Вышел из положения проверкой в OnInit значения Request.Form["__CALLBACKID"] на не null
N_C>И еще, где можно посмотреть исходник js-функции WebForm_CallbackComplete — собственно она и должна вызывать мою функцию...
Исходный код, если кому интересно, нашел здесь: http://weblogs.asp.net/mschwarz/archive/2005/03/03/384350.aspx
Комментарии, правда, на немецком — но это не столь важно...
Здравствуйте, Nikolay_Ch, Вы писали:
N_C>>На сервер запрос приходит и обрабатывается нормально. А вот на клиенте обратная функция aaa не вызывается N_C>>Может есть какие тонкости? N_C>Нашел. Тонкость оказалась в том, что я применял одну из реализаций страницы ожидания с DIV, N_C>который в OnInit флашился на клиента, а в конце загрузки скрывается. Оказалось, что при обработке N_C>callback'а он опять-же флашился на клиента и парсер на клиентской стороне неправильно определял N_C>признак безошибочного окончания вызова. Вышел из положения проверкой в OnInit значения Request.Form["__CALLBACKID"] на не null
А можно поподробнее рассказать, а лучше на примере показать. Столкнулась точно с такой же проблемой. А вот про проверку не понятно, что проверять, как проверять?
Здравствуйте, Nadusha, Вы писали:
N>А можно поподробнее рассказать, а лучше на примере показать. Столкнулась точно с такой же проблемой. А вот про проверку не понятно, что проверять, как проверять?
N>А можно поподробнее рассказать, а лучше на примере показать. Столкнулась точно с такой же проблемой. А вот про проверку не понятно, что проверять, как проверять?
Если с такой-же — то вкраце так:
В OnInit страницы у меня создается DIV и сразу-же отсылается на клиента (Response.Flush())
Там-же регистрируется клиентский стартапный скрипт, который скрывает этот DIV.
У меня класс страницы соответствующий для этого — когда надо показать "Пожалуйста, подождите..." —
просто наследуюсь не от Page, а от WaitPleasePage.
При CallBack OnInit отрабатывает точно так-же! И поэтому на клиента возвращается кроме самого ответа
еще и мой DIV, который сформирован вначале. Поэтому, для нормальной работы я в этом классе прописал
условие, по которому не показываю DIV (__CALLBACKID — идентификатор контрола, вызвавшего CallBack —
его заполняет клиентский скрипт от MS):
// check for "callback" to disable "wait please" functionalityif (Request.Form["__CALLBACKID"] != null)
bShowWaitPlease = false;
Здравствуйте, Nikolay_Ch, Вы писали:
N_C>При CallBack OnInit отрабатывает точно так-же! И поэтому на клиента возвращается кроме самого ответа N_C>еще и мой DIV, который сформирован вначале. Поэтому, для нормальной работы я в этом классе прописал N_C>условие, по которому не показываю DIV (__CALLBACKID — идентификатор контрола, вызвавшего CallBack - N_C>его заполняет клиентский скрипт от MS): N_C>
N_C>// check for "callback" to disable "wait please" functionality
N_C>if (Request.Form["__CALLBACKID"] != null)
N_C> bShowWaitPlease = false;
N_C>
Здравствуйте, Gollum, Вы писали:
G>Здравствуйте, Nadusha, Вы писали:
N>>А можно поподробнее рассказать, а лучше на примере показать. Столкнулась точно с такой же проблемой. А вот про проверку не понятно, что проверять, как проверять?
Сделано вроде все как в примерах, но все равно не работает
А>в том то и дло, что ничего не говорит, серверная часть выполняется, а завершающая клиентская процедура не срабатывает (если правильно выражаюсь)
Включай клиентскую отладку (трассировку, SPY) и лови то, что тебе сервер шлет при CallBack...
Наверняка какие-то лишние данные в Output Stream кто-то пишет...
Здравствуйте, Nikolay_Ch, Вы писали:
А>>в том то и дло, что ничего не говорит, серверная часть выполняется, а завершающая клиентская процедура не срабатывает (если правильно выражаюсь) N_C>Включай клиентскую отладку (трассировку, SPY) и лови то, что тебе сервер шлет при CallBack... N_C>Наверняка какие-то лишние данные в Output Stream кто-то пишет...
N>в GetCallbackResult() попадает то что нужно
Дело не в том, что туда попадает. А в том, что кто-то уже
успел прписать что-то в поток Response. Это можно отследить
уже по результату. Например, вывести на экран все то, что
реально получил клиент, о чем я уже говорил.
Если стоит буферизация, еще можно попробовать очистить буфер,
перед отправкой результатов: Response.Clear()