使用ASP.Net Ajax调用PageMethods时,如何从“success”方法访问Http响应头?
例如:
PageMethods.DoSomething( function(result){successMethod(result)},function(error){errorMethod(error)} ); function successMethod(result){ //------how can I access the Http response headers from here? ------ }
谢谢你的帮助
解决方法
在您的示例中,如果是一个asp.net Web服务代理,PageMethods.DoSomething的返回值应该等于
WebRequest.提供此选项是为了您可以在启动请求后对其进行操作(即取消请求等).
使用此类,您可以使用add_completed方法,该方法可用于在Web请求完成时添加处理程序.回调的签名是函数OnWebRequestCompleted(executor,eventArgs),其中的executor参数使您可以获取额外的响应信息.例如,您可以使用executor.getAllResponseHeaders()获取响应头.它应该是标题名称和值的映射(命名集合).
因此,如果您在进行服务方法调用后立即向Web请求的已完成事件添加处理程序,它应该可以工作(世界上没有任何Web服务能够比连续两行代码响应更快!).
之前的WebRequest超链接包含了如何连接它的完整示例.但请注意,此代码直接使用WebRequest.
Asp.Net Ajax Web Service代理类使用WebServiceProxy类,每个代理方法最终调用其invoke方法,该方法返回WebRequest实例.