Событие Highcharts onclick нарушает мой запрос к веб-сервису.Зачем? - PullRequest
0 голосов
/ 02 октября 2011

Я новичок в веб-разработке, любая помощь будет принята с благодарностью!Пожалуйста, дайте любую идею, если у вас есть в моем случае ниже.

Так что это ситуация.У меня есть веб-приложение.Веб-приложение имеет страницу ascx и веб-сервис.Я поставил несколько диаграмм высоких диаграмм (клиентская библиотека диаграмм javascript).И менеджер скриптов со ссылкой на веб-сервис.

Итак, когда документ готов (я использую jquery для него), моя функция javascript (я назвал ее makeUpdate ()) с заданным интервалом времени ожидания 1 сек, вызывает другую функцию JavaScript GetDataWrapper ().

Функция GetDataWrapper является оберткой для веб-службы веб-метода GetData (), которая возвращает данные для диаграмм.Вы знаете, что GetDataWrapper выглядит следующим образом:

function GetDataWrapper()
{
 MyNameSpace.WebService.GetData(function (result, userContext, methodName) {
// onSuccess may be do some new requests on something else
}, function (error, userContext, methodName) {
// onFailed alert error message
});
} 

Также, конечно, я помещаю любые выражения в метод WebService.GetData в try / catch.

Теперь, если я начну свое приложение, я получу некоторую задержкуи мои диаграммы будут получать данные один за другим, потому что у меня есть асинхронные вычислительные данные (вот почему мне нужно несколько раз вызвать setTimeout и вызвать функцию javascript makeUpdate ()).

Так что, если я просто подожду, все мои диаграммы получат данныевот что мне нужно!

НО!

У моих старших графиков есть метод onClick для перенаправления на другую страницу с помощью 'location.href = ....' для каждой области кругового представления, например: http://jsfiddle.net/ggZ9Z/1/.

Итак, если я нажму на первую круговую диаграмму с данными, когда другие все еще ждут данных, я получу сообщение об ошибке GetDataWrapper () onFailed без каких-либо исключений в WebService.GetData () (я поставил точку взлома в этомспособ)

У меня вопрос, как могло произойти событие и вызвать мою функцию onFailed в GetDataWrapper () без исключения в WebService.GetData ()?

Есть предложения?

В любом случае, спасибо за ваше время!

1 Ответ

0 голосов
/ 07 октября 2011

У меня было много подобных проблем.У меня нет официальных документально подтвержденных доказательств, на которые я могу вас направить, но я подробно опишу то, что обнаружил в различных тестах ниже.

Причина вызова обратного вызова onFailed заключается в том, что при попытке установить местоположениебраузера на другую страницу, текущая страница выгружается, и в этом случае собственный объект браузера XMLHTTPRequest прерывает все выполняющиеся асинхронные запросы и устанавливает статус ответа равным 0. В этом случае прокси-класс javascript, сгенерированный ASP.NET для обработкиЗапросы веб-службы вызывают обработчик onFailed.

Мое решение этой проблемы - создать новый базовый класс прокси-сервера, изменив исходный Sys.Net.WebServiceProxy для обработки кода состояния «0» и вызова «onCanceled».обратный вызов вместо «onFailed».Это решение неудобно, потому что каждый прокси-класс для каждого веб-сервиса должен быть сгенерирован вручную.

Возможно, есть более эффективные решения, о которых я не знаю, и я был бы рад, если у кого-то есть такое решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...