在使用jQuery.ajax()異步方法的時候發現一個返回數據混合的漏洞,記錄下來分享給你們。前端
最近在作一個數據統計分析的項目,因爲網頁須要加載多個數據統計的表格,並且查詢數據統計表格的方法比較耗時。因此在網頁的初始化加載中調用了多個jQuery.ajax()的異步請求方法,分別請求不一樣的數據統計表格的數據。ajax
通過屢次的調試,發現若是使用同步調用的話可以實現效果(界面須要等待,加載慢),可是異步調用卻老是實現不了想要的效果。後來發現jQuery.ajax()的error返回結果中,兩次請求的數據混合到了一塊兒。chrome
項目使用SpringMVC框架,經過response返回結果,在chrome 55和IE 11中使用獲得相同的結果。框架
Java後臺的調用:異步
jQuery.ajax()的異步調用:測試
A方法和B方法分別爲兩個比較耗時的後臺方法,頁面加載時使用兩個jQuery.ajax()異步請求方法,方法回調error輸出後臺返回數據。調試
能夠發如今前端控制檯輸出的結果中,一個前端返回爲「兩個後臺方法返回數據的混合」,而另外一個返回爲空。再看後臺Java中,兩個後臺方法使用的request和response的HashCode是相同的。也就是說,即便前端的寫法是發起兩個不一樣的異步請求,可是實際上只發起了一個request請求。因此調用的兩個後臺方法返回結果都會放到同一個response中。開發
而 jQuery.ajax()同步請求方法是發起兩個不一樣的request請求的。同步
以上是開發過程當中發現的問題,若是測試、結論有不嚴謹的地方,請指出。後臺