文档章节

jQuery.ajax()异步方法的漏洞

李温凉
 李温凉
发布于 2016/12/22 16:01
字数 493
阅读 233
收藏 0

        在使用jQuery.ajax()异步方法的时候发现一个返回数据混合的漏洞,记录下来分享给大家。

        最近在做一个数据统计分析的项目,由于网页需要加载多个数据统计的表格,而且查询数据统计表格的方法比较耗时。所以在网页的初始化加载中调用了多个jQuery.ajax()的异步请求方法,分别请求不同的数据统计表格的数据。

        经过多次的调试,发现如果使用同步调用的话能够实现效果(界面需要等待,加载慢),但是异步调用却总是实现不了想要的效果。后来发现jQuery.ajax()的error返回结果中,两次请求的数据混合到了一起。

        项目使用SpringMVC框架,通过response返回结果,在chrome 55和IE 11中使用得到相同的结果。

        Java后台的调用:

        jQuery.ajax()的异步调用:

        A方法和B方法分别为两个比较耗时的后台方法,页面加载时使用两个jQuery.ajax()异步请求方法,方法回调error输出后台返回数据。

        可以发现在前端控制台输出的结果中,一个前端返回为“两个后台方法返回数据的混合”,而另一个返回为空。再看后台Java中,两个后台方法使用的request和response的HashCode是相同的。也就是说,即使前端的写法是发起两个不同的异步请求,但是实际上只发起了一个request请求。所以调用的两个后台方法返回结果都会放到同一个response中。

        而 jQuery.ajax()同步请求方法是发起两个不同的request请求的。

 

        以上是开发过程中发现的问题,如果测试、结论有不严谨的地方,请指出。

© 著作权归作者所有

李温凉
粉丝 0
博文 6
码字总数 4331
作品 0
广州
后端工程师
私信 提问
jquery.validate.js只能对表单进行验证吗?

想要对jquery.ajax()提交请求前进行验证,但发现jquery.validate.js只对表单进行验证,就是只会拦截$().submit(),对异步提交的$.ajax()方法没有作用,是不是要改写validate.js,怎么处理啊 ...

小小邱
2012/08/17
2.7K
1
jquery 提交form表单

这个其实挺简单的,只是一开始我想错了,一开始我打算用jQuery + jQuery.form插件来做,其实不必的,只需要jQuery插件就可以了。首先,在jsp页面中导入jQuery, <script type="text/javascr...

背起行囊去远行
2013/03/20
550
0
jQuery Ajax应用总结

(友情提示:本博文章欢迎转载,但请注明出处:陈新汉,http://www.blogjava.net/hankchen) jQuery提供了简单而强大的选择器功能,同时对Ajax操作也给出了很好的支持。在Ajax方面,jQuery除...

阿秀a
2010/09/07
0
0
替代传统XMLHttpRequest的fetch方法实现ajax

FETCH API提供了一个JavaScript接口,用于访问和操作HTTP管道的某些部分,例如请求和响应。它还提供了一种全局fetch()方法,它提供了一种简单、逻辑的方法来跨网络异步地获取资源。 与jqu...

OSC_brqIMQ
2018/07/03
131
0
关于angulerjs的八种技巧

第一 迭代输出之ng-repeat标签 ng-repeat让table ul ol等标签和js里的数组完美结合 你甚至可以指定输出的顺序: 第二 动态绑定之ng-model标签 任何有用户输入,只要是有值的html标签,都可以...

a69694510
2017/06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用TensorFlow的AI程序运行报错AttributeError: module 'tensorflow' has no attribute 'xxx'

使用TensorFlow的AI程序,在运行时报错AttributeError: module 'tensorflow' has no attribute 'xxx',首先检查是否是包路径不对,一般是版本变化所致。...

织梦之魂
49分钟前
3
0
提示浏览器版本低

本文转载于:专业的前端网站➭提示浏览器版本低 网站网页在遇到浏览器低版本(尤其是IE浏览器)时,提示浏览器版本低(如IE8以及以下),建议用户升级浏览器以获得最好体验。以下是代码: 1...

前端老手
51分钟前
6
0
CentOS 7系统增加swap

转载请注明文章出处:CentOS 7系统增加swap swap是位于磁盘上的特殊文件(或分区),属于“虚拟内存”的一部分。通俗点就是内存的备胎,内存充足的情况下,基本上没swap什么事(和设置有关)...

tlanyan
今天
6
0
基于Prometheus和Grafana的监控平台 - 环境搭建

相关概念 微服务中的监控分根据作用领域分为三大类,Logging,Tracing,Metrics。 Logging - 用于记录离散的事件。例如,应用程序的调试信息或错误信息。它是我们诊断问题的依据。比如我们说...

JAVA日知录
今天
6
0
PHP运行时全局构造体

struct _php_core_globals { zend_bool magic_quotes_gpc; // 是否对输入的GET/POST/Cookie数据使用自动字符串转义。 zend_bool magic_quotes_runtime; //是否对运行时从外部资源产生的数据使...

冻结not
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部