当前位置: 代码迷 >> Java Web开发 >> 一个挺大的有关问题
  详细解决方案

一个挺大的有关问题

热度:94   发布时间:2016-04-16 22:05:42.0
一个挺大的问题

前台利用ajax隔两秒就向后台发送请求,后台是使用SSH框架来的,现在的关键问题是前台发送请求过来之后,后台还没有处理完成,前台就又发送数据了,按理来说struts是多线程的,但是始终没有返回数据给前台,我想问的是不是堵塞了?还有这个问题应该怎们解决呢?

求大神们光顾!


------解决方案--------------------
你的Action有没有配置scope=“prototype”?sp[align=right]ring容器默认作用域是单例的,所以你需要配置这个。
因为struts2针对每次请求都会实例化一个新的Action的,所以应该不会存在你说的堵塞情况。
用firebug看一下你的请求和响应~
------解决方案--------------------
我不定对不对,我说下我的理解:不是struts的问题,是前台AJAX的问题,你第一次发AJAX请求,值还没有返还回来,第二第三次接着又发,你说第一次的返回值是给谁呢?而当前的AJAX代码是等谁的呢?我的意思说,你第一次发的AJAX请求,在值返回的是他找不到对应的AJAX,而第二次回来,AJAX又变成了第三个的AJAX,唯一的解决方法就是在定时时间内把值返还回来,你可以把时间提长些看看,等值返回来再循环
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

我不定对不对,我说下我的理解:不是struts的问题,是前台AJAX的问题,你第一次发AJAX请求,值还没有返还回来,第二第三次接着又发,你说第一次的返回值是给谁呢?而当前的AJAX代码是等谁的呢?我的意思说,你第一次发的AJAX请求,在值返回的是他找不到对应的AJAX,而第二次回来,AJAX又变成了第三个的AJAX,唯一的解决方法就是在定时时间内把值返还回来,你可以把时间提长些看看,等值返回来再循环


赞同5楼的说法,你这应该是前台js代码的问题,可能与后台没啥关系。


引用:
Quote: 引用:

我不定对不对,我说下我的理解:不是struts的问题,是前台AJAX的问题,你第一次发AJAX请求,值还没有返还回来,第二第三次接着又发,你说第一次的返回值是给谁呢?而当前的AJAX代码是等谁的呢?我的意思说,你第一次发的AJAX请求,在值返回的是他找不到对应的AJAX,而第二次回来,AJAX又变成了第三个的AJAX,唯一的解决方法就是在定时时间内把值返还回来,你可以把时间提长些看看,等值返回来再循环


赞同5楼的说法,你这应该是前台js代码的问题,可能与后台没啥关系。



但是我必须保证前台一直向后台发送数据呀!因为有这个需求,那前台如何改呢?我那种改法有问题吗?



你的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中有同步块么。  代码一步步跟进去看,总能找到问题的, 我觉得最有可能是数据库堵了。
  相关解决方案