挂起的原因猜测:
首先猜测是浏览器的问题,对于老IE7、8来说,有个功能是浏览器的自动缓存,即如果对相同的地址进行访问,则浏览器会直接去访问缓存,而不是重新访问目标地址。
解决方法:对访问的地址,附加一个当前的时间,保证每次访问的地址都是不同的(本质上是一个地址,但是带了一个时间的参数)
解决方法2:同时,在ajax中关闭缓存:cache:false,
然后发现问题还是没有解决。
决定设置一个timeout计时,并且在complete回调函数中设置超时提示,注意这个计时要比运行时间要久。
var ajaxTimeOut=
$.ajax({
type:"post",
url:"/AddSR_ReadCourseName",
async:true,
cache:false,//缓存
timeout:5000,
dataType:"json",
success:function(data)
{
alert("data.success 成功");
},
error:function ()
{
alert("数据传输失败!")
},
complete:function (XMLHttpRequest,status)
{
if(status=='timeout')
{
//如果请求超时,则弹出提示,并取消请求
alert("请求超时");
ajaxTimeOut.abort();
}
}
});
这个时候因为tomcat有个关于数据连接池的报错,于是猜测是因为数据连接池的连接数设置少了,不够使用,改变后发现还是没有解决。
最后的解决方法及原因:
真正的原因很简单,就是因为上一个和数据库的链接没有关闭,从而使下一个请求被无期限挂起。
所以将所有用到的【ResultSet】、【CallableStatment】、【Connection】在使用后按顺序由近到早挨个关闭即可。