前台利用ajax隔两秒就向后台发送请求,后台是使用SSH框架来的,现在的关键问题是前台发送请求过来之后,后台还没有处理完成,前台就又发送数据了,按理来说struts是多线程的,但是始终没有返回数据给前台,我想问的是不是堵塞了?还有这个问题应该怎们解决呢?
求大神们光顾!
------解决方案--------------------
你的Action有没有配置scope=“prototype”?sp[align=right]ring容器默认作用域是单例的,所以你需要配置这个。
因为struts2针对每次请求都会实例化一个新的Action的,所以应该不会存在你说的堵塞情况。
用firebug看一下你的请求和响应~
------解决方案--------------------
我不定对不对,我说下我的理解:不是struts的问题,是前台AJAX的问题,你第一次发AJAX请求,值还没有返还回来,第二第三次接着又发,你说第一次的返回值是给谁呢?而当前的AJAX代码是等谁的呢?我的意思说,你第一次发的AJAX请求,在值返回的是他找不到对应的AJAX,而第二次回来,AJAX又变成了第三个的AJAX,唯一的解决方法就是在定时时间内把值返还回来,你可以把时间提长些看看,等值返回来再循环
------解决方案--------------------
你的js代码都没有贴出来,谁知道该怎么帮你呢?
------解决方案--------------------
xmlhttp.open("post", "bulitOpenChart!built?time=" + timestamp
+ "&hostid=" + hostid + "&pid=" + '${pid}', true);
这个true 就是表示异步的, 你把他改成false 试一下!
------解决方案--------------------
我不定对不对,我说下我的理解:不是struts的问题,是前台AJAX的问题,你第一次发AJAX请求,值还没有返还回来,第二第三次接着又发,你说第一次的返回值是给谁呢?而当前的AJAX代码是等谁的呢?我的意思说,你第一次发的AJAX请求,在值返回的是他找不到对应的AJAX,而第二次回来,AJAX又变成了第三个的AJAX,唯一的解决方法就是在定时时间内把值返还回来,你可以把时间提长些看看,等值返回来再循环
什么叫找不到对应的AJAX, 不是有 xmlhttp = new XMLHttpRequest()么, 每次都是新的对象。 如果没有返回肯定是后台的原因! 后台阻塞不阻塞跟spring的单例还是多例也没关系,难道你action中有同步块么。 代码一步步跟进去看,总能找到问题的, 我觉得最有可能是数据库堵了。