IE8下struts2 采用ajax提交表单,返回json字符串,解析不了,直接保存json字符串。提示下载action.
但是在火狐 chrome下能够解析。
因为表单FORM是multipart-form方式提交的(enctype="multipart/form-data")。中间含有( <input type="file" id="logoImage" tabindex="4" name="logoImage" />)文件域。
提交后,提示下载action.并回调函数不能够正常拿到json字符串并不能解析。
解决办法:IE8下不能够正常获取返回的流的文件头,需要指定。
在struts2下的配置文件中添加:
<param name="contentType">text/html</param>
类似:
<action name="addMeeting" class="com.action.meeting.MeetingAction"
method="add">
<result type="json">
<param name="contentType">text/html</param>
<param name="root">resultMap</param>
</result>
</action>
参考代码如下:
<form id="addMeetingForm" action="${ctx}/pages/admin/pri/meeting/addMeeting.action" enctype="multipart/form-data">
<input type="hidden" id="meeting.id" name="meeting.id" value="${meeting.id}" />
<fieldset>
<legend>基本信息</legend>
<dl>
<dt>
<label for="title"><font color="red">* </font>名 称:</label>
</dt>
<dd>
<input style="width:80%" type="text" class="half" id="meeting_name" name="meeting.name" value="${fn:escapeXml(meeting.name)}" maxlength="40"/>
<small>请限制在40字以内,您还可以输入<span id="meeting_name_remain">40</span>字</small>
<!-- <small>如标题太长,则可输入空格进行换行设置,若标题中存在多个空格,则以第一个空格作为换行标志<span id="meeting_name_remain">40</span>字</small> -->
</dd>
</dl>
<dl>
<dt>
<label for="title"><font color="red">* </font>类 型:</label>
</dt>
<dd>
<c:if test="${meeting.id == null}">
<select id="meeting_type" name="meeting.meetingType.id">
<s:iterator value="meetingTypeList" var="mType">
<option value="${mType.id }" ${meeting.meetingType.id == mType.id ? "selected" : "" }>${mType.name }</option>
</s:iterator>
</select>
</c:if>
<c:if test="${meeting.id !='' && meeting.id != null}">
<label><wd:custom type="translate" entity="meeting_type" entityValue="id" entityName="name" selectedValue="${meeting.meetingType.id}" condition="where id=${meeting.meetingType.id}"></wd:custom></label>
<input type="hidden" id="meeting_type" name="meeting.meetingType.id" value="${meeting.meetingType.id}"/>
</c:if>
</dd>
</dl>
<dl>
<dt>
<label for="title"><font color="red">* </font>主 题:</label>
</dt>
<dd>
<textarea style="width:80%" class="medium" id="meeting.topic" name="meeting.topic" maxlength="2000">${fn:escapeXml(meeting.topic)}</textarea>
<small>请限制在2000字以内,您还可以输入<span id="meeting_topic_remain">2000</span>字</small>
</dd>
</dl>
<dl>
<dt>
<label for="title"><font color="red">*</font>主题皮肤:</label>
</dt>
<dd>
<div class="container">
<s:iterator value="pageThemeList" var="theme">
<div class="theme">
<div class="pic"><img src="${ctx}/css/${theme.thumbnailName}" /></div>
<div class="description">
<div class="title">
<label>
<input type="radio" name="meeting.pageTheme.id" value="${theme.id }" ${(meeting.pageTheme == null && theme.id==1) || meeting.pageTheme.id==theme.id ? "checked" : "" } /> ${theme.title}
</label>
</div>
<div class="comments">${theme.description}</div>
</div>
</div>
</s:iterator>
<div class="clear"></div>
<font id="tip_themeId" style="line-height:35px" color="red"></font>
</dd>
</dl>
<dl>
<dt>
<label for="title"><font color="red"></font>logo图片:</label>
</dt>
<dd>
<input type="file" id="logoImage" tabindex="4" name="logoImage" />
<br/>
<font id="tip_logoImage" style="line-height:35px" color="red"></font>
<small>请上传用于页面头部的logo图片,必须是背景透明的gif或png格式图片,最佳尺寸为108x53像素</small>
<s:if test="meeting.logoImage != null && meeting.logoImage.length() > 0">
<div id="logoDiv" class="logo">
<img src="${serverUrl}${meeting.logoImage }" width="108" height="53" border="0"/>
<small>已经设定的logo图片,点此<a href="javascript:deleteLogo(${meeting.id})">删除</a></small>
</div>
</s:if>
</dd>
</dl>
<dl>
<dt>
<label for="title"> 备 注:</label>
</dt>
<dd>
<textarea style="width:80%" class="medium" id="meeting.comments" name="meeting.comments" maxlength="200">${fn:escapeXml(meeting.comments)}</textarea>
<small>请限制在200字以内,您还可以输入<span id="meeting_comments_remain">200</span>字</small>
</dd>
</dl>
</fieldset>
<div class="page_form_sub">
<a href="##" onclick="save();" id="submitBtn" class="btn_common btn_true">保 存</a>
</div>
</form>
参考JS:
function save(){
if($("#submitBtn").hasClass("btn_false")){
alert("您已经添加过本次编辑内容,请不要重复保存!");
return false;
}
//判断会议加会时间是否在开始和结束时间之内
$("#err_joinTime").html("");
var joinTime =$("#joinTime").val();
if(joinTime != "") {
var startTime = $("#startTime").val();
var endTime = $("#endTime").val();
if(joinTime < startTime || joinTime > endTime) {
return false;
}
}
submit();
//document.getElementById("submitBtn").disabled = "disabled";
}
function submit(){
var url = '';
if('${meeting.id}'==''){
url= '${ctx}/pages/admin/pri/meeting/addMeeting.action';
}else{
url= '${ctx}/pages/admin/pri/meeting/modifyMeeting.action';
}
var options = {
beforeSubmit: validate,
url: url,
success: callback,
type: 'post',
dataType: 'json'
};
$('#addMeetingForm').ajaxSubmit(options);
} //回调函数
function callback(data){
hideLoading();
alert(data.retmsg);
if(data.retcode=="0"){
showEditMenu("${ctx}",data.retdata.id);
//gotobase();
location.href = "${ctx}/pages/admin/pri/meeting/getMeetingById.action?returnType=manage_baseinfo&meeting.id=" + data.retdata.id;
}else{
$("#submitBtn").removeClass("btn_false");
$("#submitBtn").addClass("btn_true");
}
}
分享到:
相关推荐
json2+jsonplugin struts2整合ajax时,使用json时需要的jar包。。。。。。。。。。。。
Struts2+ajax+json返回list,并处理json返回为[object,object]的方法,Struts2配置
如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选择。... Struts2返回JSON有两种方式:1.使用Servlet的输出流写入JSON字符串;2.使用Struts2对JSON的扩展。
介绍struts、ajax如何返回json数据 一首先引入Struts和json所需的jar包。 二编写页面 三编写action类 四Struts配置
利用AJAX传递JSON数组,后台struts2的action接收。 详细代码简单易懂。
3. 在struts2的Action通过2种不同的实现方法返回json格式的字符串。 4. 针对商品实现简单无刷新上传与下载 4. 批量导入数据采用的是导入test文件夹下的测试压缩包upload.rar上传到服务器的临时目录,然后利用WinRar....
struts2.3.20生成返回json 浏览器解析json!
该资源是使用struts2框架进行操作,返回json格式数据,前台通过ajax提交内容。
jsp通过Ajax无刷新获取Action返回的模拟数据,然后通过struts2转化成json数据返回页面....这里面Map,List,对象等等,一些常用的操作都有。主要的代码在Action和 json.js里面。适合新手入门
struts2下通过jquery的ajax从后台传json对象并展示在web页面上的一个小例子,所需的jar包请自己下载否则无法运行,所需的包包括struts的必须包,json的支持包和struts对json的支持包
struts2-json-plugin-2.2.3.1能用的包
struts2返回json数据类型
(struts2 json Ajax 整合所需全部jar包
最新Struts2.3.8 + jquery + ajax + json 学会struts+jq+ajax+json只要4步‵‵经过作者的总结超级简单 1. 导入struts2 及json包 asm-3.3.jar asm-commons-3.3.jar asm-tree-3.3.jar commons-fileupload-1.2.2.jar...
maven-web项目 Struts2 Struts注解 Struts2返回json
一个简单的demo,实现了struts2+jquery执行ajax异步请求并返回json类型数据的实例,代码中附有注释,简单易懂。 基于eclipse开发,导入到eclipse即可运行。
Struts2 Jquery ajax Json实现的一个完整案例
import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction等缺少
struts2+ajax+easyui+json+datagrid增,删,改,查,分页,排序,有数据库
关键代码都在里面 资源是工程中的一部分 暂不能运行 原来用的是Java实现Json串 考虑到频繁访问数据库 就改成了存储过程