首页 文章

Highcharts onclick事件破坏了我的Web服务请求 . 为什么?

提问于
浏览
0

我是网络开发的新手,非常感谢任何帮助!如果您的情况如下,请随时了解 .

所以这就是情况 . 我有一个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点)

我的问题是它是如何发生事件并在WebService.GetData()中无异常地在GetDataWrapper()中调用我的函数onFailed?

有什么建议?

无论如何,谢谢你的时间!

1 回答

  • 0

    我自己也有很多类似的问题 . 我没有任何正式的文件证据可以指导您,但我将通过不同的测试详细说明我发现的内容 .

    调用onFailed回调的原因是,当您尝试将浏览器的位置设置为另一个页面时,正在卸载当前页面,在这种情况下,浏览器的本机XMLHTTPRequest对象将中止正在进行的所有异步请求,并将响应的状态设置为在这种情况下,ASP.NET生成的用于处理Web服务请求的javascript代理类调用onFailed处理程序 .

    我解决这个问题的方法是通过修改原始的Sys.Net.WebServiceProxy来处理状态代码'0'并调用'onCanceled'回调而不是'onFailed'来创建一个新的代理基类 . 该解决方案不方便,因为需要手动生成每个Web服务的每个代理类 .

    也许有更好的解决方案,我不知道,如果有人有这样的解决方案,我会很高兴 .

相关问题