在jquery中,如何先在一个位置处理ajax响应数据,然后再处理其他处理程序

在jquery中,如何先在一个位置处理ajax响应数据,然后再处理其他处理程序,jquery,ajax,Jquery,Ajax,如何在其他处理程序之前的一个位置处理ajax响应数据 在我的web应用程序中,我使用了很多$.ajax方法向服务器发送请求并获取响应数据,我还使用了一些jQuery插件,如jsTree、datatables等(我使用这些插件的ajax数据源) 应用程序有一个权限控制系统,因此如果用户没有登录,ajax请求将获得一些json响应数据,如{havePermission:“no”,permissionsonName:“permission_NAME”},因此我想在所有其他处理程序之前找到一个位置来处理

如何在其他处理程序之前的一个位置处理ajax响应数据

在我的web应用程序中,我使用了很多$.ajax方法向服务器发送请求并获取响应数据,我还使用了一些jQuery插件,如jsTree、datatables等(我使用这些插件的ajax数据源)

应用程序有一个权限控制系统,因此如果用户没有登录,ajax请求将获得一些json响应数据,如{havePermission:“no”,permissionsonName:“permission_NAME”},因此我想在所有其他处理程序之前找到一个位置来处理ajax响应数据。我尝试了.ajaxComplete、.ajaxError、.ajaxSuccess、,甚至可以扩展$.ajax方法,但这一切都不起作用


那么,有什么地方可以实现这个目标呢?

在这种情况下,您可以为所有http处理程序创建一个基类,在这个基类中,您可以重写ProcessRequest方法来执行一些用户验证工作

因此,任何httpHandler的流程请求都将首先调用base.processrequest,然后继续使用自己的业务逻辑

在基类processRequest中,如果验证未通过,则只能在那里写入响应

谢谢


普拉纳夫·考希克(Pranav Kaushik)

如果我误解了你的意思,请原谅

希望您希望在客户端有一个通用的位置,可以捕获和验证所有发送到服务器的请求和来自服务器的所有响应。对吧?

如果是这样的话,下面是一种使用AJAX的方法

在AJAX上编写自己的包装器调用如下

函数doAJAX(reasonToCallServer、url、processData、data、isAync、contentType、callbackmethod){
验证请求(reasonToCallServer,data);
$.ajax({ url:url, processData:false, 数据:数据, success:function(response){ValidateResponse(reasonToCallServer,contentType,response,callbackmethod) }});
}

现在,您可以定义ValidateRequest和ValidateResponse方法,并执行您想要执行的任何通用验证

请注意,在ValidateResponse中,您收到了callbackMethod参数,这是在完成所有验证时要调用的实际方法

ResonToCallServer只是一个字符串,用于调用服务器的上下文。因此,您可以进行切换,也可以进行特定于上下文的验证

请随时要求进一步澄清。如果你觉得这有帮助,请投票:)

谢谢,

Pranav Kaushik

让您的服务器状态与json数据一起显示。在您的成功中检查响应状态,如果这不是200,请做任何您想做的事。谢谢。但是因为使用jQuery插件(jsTree,datatables),所以这样做无法实现目标。现在的问题是在客户端。jQuery$.ajax方法中是否有任何未记录的ajax事件处理程序?再次感谢。您的想法很好。由于我使用jquery插件,如jsTree、datatables,它们似乎使用$.ajax方法来获取异步数据,所以我只想找到一种简单的方法,如hack$.ajax方法或一些globle事件处理程序,但根据我这些天在internet上找到的许多文章和常见问题解答,没有简单的方法来实现我的目标。所以我必须换一种方式思考。非常感谢你如果你喜欢的话,投票将是对我的感谢:)