我是网络开发的新手,非常感谢任何帮助! 如果您的情况如下,请随时了解。
所以这就是情况。我有一个Web应用程序。 Web应用程序具有ascx页面和Web服务。我把几个highcharts图表(客户端javascript图表库)。和脚本管理器一起参考Web服务。
因此,当文档准备就绪时(我使用jquery)我的javascript函数(我称之为makeUpdate())设置超时inteval 1秒调用另一个javascript函数GetDataWrapper()。
GetDataWrapper函数是Web服务Web方法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
});
}
当然,我在try / catch中将任何表达式放在WebService.GetData方法中。
现在,如果我开始申请,我会得到一些延迟,我的图表将逐一接收数据,因为我有异步计算数据(这就是为什么我需要setTimeout并多次调用javascript makeUpdate()函数)。
所以,如果我只是等待所有我的图表将获得数据,那就是我需要的!
BUT!
我的highcharts有方法onClick通过'location.href = ....'重定向另一个页面,用于每个饼图区域http://jsfiddle.net/ggZ9Z/1/。
所以,如果我点击带有数据的第一个饼图,当其他人仍然在为数据而烦恼时,我将获得GetDataWrapper()onFailed警告错误消息,而WebService.GetData()中没有任何异常(我以这种方式放置了breack点)< / p>
我的问题是如何发生事件并在WebService.GetData()中无异常地调用我的函数onFailed getDataWrapper()?
有什么建议吗?
无论如何,谢谢你的时间!
答案 0 :(得分:0)
我自己也遇到过很多类似的问题。我没有任何正式的文件证据可以指导您,但我将通过不同的测试详细说明我发现的内容。
调用onFailed回调的原因是,当您尝试将浏览器的位置设置为另一个页面时,正在卸载当前页面,在这种情况下,浏览器的本机XMLHTTPRequest对象将中止正在进行的所有异步请求并设置状态响应0.在这种情况下,ASP.NET生成的用于处理Web服务请求的javascript代理类调用onFailed处理程序。
我解决这个问题的方法是通过修改原始的Sys.Net.WebServiceProxy来处理状态代码'0'并调用'onCanceled'回调而不是'onFailed'来创建一个新的代理基类。此解决方案不方便,因为每个Web服务的每个代理类都需要手动生成。
也许有更好的解决方案,我不知道,如果有人有这样的解决方案,我会很高兴。