使用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? ------
}
感谢您的帮助
答案 0 :(得分:3)
在您的示例中,如果是一个asp.net Web服务代理,PageMethods.DoSomething应该具有等于WebRequest的返回值。提供此选项是为了您可以在启动请求后对其进行操作(即取消请求等)。
使用此类,您可以使用add_completed方法,以便在Web请求完成时添加处理程序。回调签名为function OnWebRequestCompleted(executor, eventArgs)
,此中的executor
参数使您可以获取额外的响应信息。例如,您可以使用executor.getAllResponseHeaders()
获取响应标头;它应该是标题名称和值的映射(命名集合)。
因此,如果您在进行服务方法调用后立即向Web请求的已完成事件添加处理程序,它应该可以工作(世界上没有任何Web服务能够比连续两行代码响应更快!)。
之前的WebRequest超链接包含了如何连接它的完整示例。但请注意,此代码直接使用WebRequest。
Asp.Net Ajax Web服务代理类使用WebServiceProxy
类,每个代理方法最终调用其invoke
方法,该方法返回WebRequest
实例。
答案 1 :(得分:0)
Web请求具有标头集合
http://msdn.microsoft.com/en-us/library/bb383774.aspx
webrequestmanager是一个静态对象,您可以从以下位置提取此信息:
http://msdn.microsoft.com/en-us/library/bb397435.aspx
希望在两个链接之间有意义: - ;
我不是说重新编码必须使用它,但页面方法是一个包装器,因此我认为它将从Web请求访问信息,这可能会受到WebRequestManager的影响......