我有一个应用程序,它在每个服务调用的响应中获得一个身份验证令牌,它应该将前一个令牌作为参数发送给下一个调用,否则用户将是未经授权的。一旦令牌不匹配,所有其他调用都会失败。
为了确保令牌不会不匹配,我在屏幕上添加了加载器,并在启动ajax调用时立即显示它们,并保持加载覆盖在屏幕上,直到没有收到响应,否则用户可能会单击任何其他链接,从而导致另一个ajax调用。
但是,我仍然认为加载器机制容易出现漏洞。有没有办法检查是否有任何ajax调用正在进行,然后对新的调用进行排队,排队的调用将等待发起的one响应,因为它需要从响应中返回的令牌作为新的请求参数。
发布于 2016-05-13 05:17:18
我刚做了一个项目,我做了这个。假设您已经获得了AJAX函数foo.ajax( url, callback )。
您需要一种将所有细节打包到AJAX请求中的方法。因此,您创建了一个函数foo.ajaxRequest(url)和一个请求列表foo.requestList = [],并按如下方式使用它们:
foo.ajaxRequest = function( url ) {
foo.requestList.push(this);
var callback = function( data ) {
if ( foo.requestList.length ) {
foo.requestList.shift().run( data );
}
}
this.run = function( dataFromPreviousAjax ) {
foo.ajax( url + "?key=" + dataFromPreviousAjax, callback );
}
if ( !foo.requestList.length ) {
foo.ajax( url, callback );
}
}任何时候你想提出一些请求,你都可以写
new foo.ajaxRequest("http://stackoverflow.com/pingback.php");
new foo.ajaxRequest("http://stackoverflow.com/pingback.php");现在假设第一个请求返回一个键12345,第二个请求现在将运行并调用url "http://stackoverflow.com/pingback.php?key=12345"。
显然,您希望在foo.ajaxRequest中使用回调函数中的返回值做更多的工作,但这应该可以让您开始使用它。
https://stackoverflow.com/questions/37197363
复制相似问题