SSH下通过jQuery ajax访问后台action,在自己本地运行没问题但放到远程服务器后每次请求都是Aborted

时间:2022-01-21 06:27:14
小弟最近遇到了一个很痛苦的问题,自己的项目(Struts2+Hibernate+Spring3),出现了这样的情况:
下面是出问题的js代码:

function submitReply(flag){
var content = editor.getContent();       //从一个插件(Editor)获取到用户输入内容
var contentLength = editor.getContentLength(false);
if(contentLength > 2000){
alert("输入的字符数太大,请重新输入!");
}
else if (contentLength != 0) //判断内容是否为空
{
$.ajax({
  type: 'POST',
  url:'subReply.action', //调用了CommentAction.java的execcute()方法
  data: {flag:flag,content:content},
dataType: 'json',
success:function(data){
$("#reply_"+flag).val("");
loadAnswerAndComment();     //刷新加载部分页面的方法,无影响
alert("提交成功!");

});
}
else{
alert("回答内容不能为空!");
}
}

然后通过上面的url访问后台,后台是这样配置的:
首先上Struts2的配置:

<!-- ajax请求 -->
<action name="subReply" class="CommentAction" method="execute"></action>

然后是spring的配置:

<bean id="CommentAction" class="com.stusys.action.qasystem.CommentAction">
      <property name="commentService" ref="CommentService"></property>
      <property name="showQuestionService" ref="ShowQuestionService"></property>
</bean>

意图是调用CommentAction类里面的execute方法。因为项目较大配置文件与源代码过长就不都放上来了只放了关键的。
这个项目在自己电脑的myeclipse编译后放在自己的电脑的tomcat上运行是没有问题的(win7,myeclipse8.6,tomcat-7.0.55),然后放上远程服务器(win 2003,tomcat-7.0.39),就出问题了,每次到这里请求就被服务器挂起,状态显示Aborted,控制台没有报错,firebug也没有,后来发现是根本还没有访问到那个action,服务器还没有响应就没了,状态码为0。发现data如果只有一个参数就能够进去,但我后台方法需要两个参数所以报了空指针。
这是Opera的截图:
SSH下通过jQuery ajax访问后台action,在自己本地运行没问题但放到远程服务器后每次请求都是Aborted
向各位大神请教啊,这个问题困扰了好几天了。。。
先谢谢了!

1 个解决方案

#1


实在不知道什么原因,这能怀疑我的tomcat与远程服务器上面的tomcat的不同,后来使用了改变编码来解决这个问题的,在通过jQuery ajax访问后台前,将参数content通过两次content = encodeURIComponent(encodeURIComponent(content));然后在后台使用String str = URLDecoder.decode(content,"UTF-8");就可以了
没人回答 SSH下通过jQuery ajax访问后台action,在自己本地运行没问题但放到远程服务器后每次请求都是Aborted可能是我提的不好吧。。。结贴了

#1


实在不知道什么原因,这能怀疑我的tomcat与远程服务器上面的tomcat的不同,后来使用了改变编码来解决这个问题的,在通过jQuery ajax访问后台前,将参数content通过两次content = encodeURIComponent(encodeURIComponent(content));然后在后台使用String str = URLDecoder.decode(content,"UTF-8");就可以了
没人回答 SSH下通过jQuery ajax访问后台action,在自己本地运行没问题但放到远程服务器后每次请求都是Aborted可能是我提的不好吧。。。结贴了