下面是出问题的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的截图:
向各位大神请教啊,这个问题困扰了好几天了。。。
先谢谢了!
1 个解决方案
#1
实在不知道什么原因,这能怀疑我的tomcat与远程服务器上面的tomcat的不同,后来使用了改变编码来解决这个问题的,在通过jQuery ajax访问后台前,将参数content通过两次content = encodeURIComponent(encodeURIComponent(content));然后在后台使用String str = URLDecoder.decode(content,"UTF-8");就可以了
没人回答 可能是我提的不好吧。。。结贴了
没人回答 可能是我提的不好吧。。。结贴了
#1
实在不知道什么原因,这能怀疑我的tomcat与远程服务器上面的tomcat的不同,后来使用了改变编码来解决这个问题的,在通过jQuery ajax访问后台前,将参数content通过两次content = encodeURIComponent(encodeURIComponent(content));然后在后台使用String str = URLDecoder.decode(content,"UTF-8");就可以了
没人回答 可能是我提的不好吧。。。结贴了
没人回答 可能是我提的不好吧。。。结贴了