EXT--表单AJax提交后台,返回前端数据格式的转换
前言:
前端发送请求至服务端(Java),得到的数据是Java语言对象所表现的形式,经常需要转换为JSON格式的字符串写出至前端;当前端获取后也往往需要将字符串转换为js的对象。本文描述了在EXT作为前端框架,表单异步提交的情景下这些数据格式处理。当然,此类的格式转换方法有多种,本文仅描述其中一种而已。
说明:EXT版本:3.4
示例:
服务端相关代码
//创建SubTreeVo集合
List<SubTreeVo> treeVos = new ArrayList<SubTreeVo>();
if( topleveldomianList != null && !topleveldomianList.isEmpty() ) {
Iterator<Ttopleveldomian> it = topleveldomianList.keySet().iterator();
while ( it.hasNext() ) {
Ttopleveldomian key = it.next();
SubTreeVo vo = new SubTreeVo();
vo.setId(key.getiDomainId());//域名id
vo.setName(key.getsDomainName());//域名
vo.setUrl(key.getsDomainUrl());//域名地址
vo.setUri(topleveldomianList.get(key));//域名uri
treeVos.add(vo);
}
}
try {
jsonStr = JSONUtil.serialize(treeVos);
} catch (JSONException e) {
}
}//写出
out.write("{success:true,info:'上传成功',dataJson:'"+jsonStr+"'}");
//...
小结:JSONUtil为org.apache.struts2.json包下的一个类--需导struts2-json-plugin-2.3.15.1.jar,其serialize方法就是将Object转换为JSON字符串。
前端相关代码
importform.getForm().submit({
url : '/uploadFileWhiteName.do?action=channelDomainImport&channelId='+channelId,//调用的url资源
method : 'POST',//获取请求URL的HTTP
waitTitle : '请稍后',//在调用一个action的处理过程中调用的Ext.MessageBoxwait显示的标题
waitMsg : '系统正在处理 ...',//在调用一个action的处理过程中调用的Ext.MessageBoxwait显示的内容
/**
* 当接收到一个有效的成功返回的数据包的时候调用的回调函数。
* @form Ext.form.BasicForm 做出请求动作的表单
* @action Ext.form.Action The Action class.
*/
success : function(form, action) {
//获取服务器返回的数据--JSON字符串
var str = action.response.responseText;
//将JSON字符串解析成对象
var msg = Ext.util.JSON.decode(str);
//将JSON字符串解析为对象 (注:用Ext.util.JSON.decode也可以)
var jsObject = eval(msg.dataJson);
//...
小结:将JSON字符串转换为js对象有两种方式:一是用EXT的工具包的JSON类,其decode方法可将JSON字符串转换为js对象;二是调用javascript的eval方法,可将JSON字符串转换为js对象。不过调用eval方法需注意的是:如果为单对象,则需写成eval("("+data+")");的形式,具体参见我的另一篇博客:js--eval函数。
EXT--表单AJax提交后台,返回前端数据格式的转换的更多相关文章
- 解决layui表单ajax提交回调函数不起作用问题的两种方式
最近想用layui开发一个论坛模板用的是fly-ui,才接触layui对其还不太熟悉.一个简单的登录就困扰了我很久.登录的form通过ajax提交回调函数老是不起作用.经过浪费了N多时间的调试,发现l ...
- 织梦自定义表单ajax提交范例
function add_ajaxmessage(){ var dh = document.getElementById("tel"); //表单验证 if($("#te ...
- 表单提交时上传图片 表单ajax提交
页面 <script type="text/javascript" src="js/jquery.form.js"></script>& ...
- 获取form表单默认提交的返回值
1.经常用form表单提交的小伙伴有没有发现,form表单默认的提交是没有返回值的,而且默认提交成功之后是跳转,跳转的action的路径,下面写一下默认的提交如何获取到form表单的返回值json,并 ...
- form表单ajax提交
这里下面有两种 第一种是form表单里面添加了数据,并且含有上传的图片,第二种是from表单中不含有图片 只有普通数据 第一种form表单中包含有图片的类型: <form method=&q ...
- input设置为disabled,表单无法提交后台解决方法
<input name="country" id="country" size=12 value="disabled提交时得不到该值 " ...
- 解决表单GET提交后台数据乱码问题
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/ForeverCjl/article/details/36180933 在页面上提交数据到s ...
- MVC身份验证.MVC过滤器.MVC6关键字Task,Async.前端模拟表单验证,提交.自定义匿名集合.Edge导出到Excel.BootstrapTree树状菜单的全选和反选.bootstrap可搜索可多选可全选下拉框
1.MVC身份验证. 有两种方式.一个是传统的所有控制器继承自定义Control,然后再里面用MVC的过滤器拦截.所以每次网站的后台被访问时.就会先走入拦截器.进行前端和后端的验证 一个是利用(MVC ...
- 使用ajax方法实现form表单的提交(附源码)
写在前面的话 在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转,页面间的跳转等行为的控制权往往在后端,后端会控制页面的跳转及数据传递,但是在某些时候不希望页面跳转,或者说 ...
随机推荐
- 尝试Hexo
Hexo是没弄好,目前还只在GitHub上搭建了个框架,地址:https://lengdefengren.github.io/ 或者lengdefengren.github.io 我测试Hexo已经 ...
- ASP.NET发布WebService
1. 创建一个空的Web应用程序 2. 再添加一个Web服务 3. 在所创建Web服务内,编写一算法 4. 写完可直接运行查看结果 5. 项目->右键,发布此WebService 6. 发布至 ...
- [javascript|基本概念|Unll]学习笔记
Uull类型的值:null(只有一个)|空对象指针|typeof操作符返回object 作用:一般用于对即将保存对象但不知具体对象的引用 特殊:null == undefined --> tru ...
- SCP服务实现Linux交互
SCP服务实现Linux交互 在实际工作中,我们可以使用scp服务器进行Linux与Linux之间的信息交互. 基本指令: scp 本地文件 远程文件 scp ...
- 常见web服务器错误
参考地址:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5 10 Status Code Definitions ...
- c++学习——类成员的访问权限
成员的访问权限 Public: 任何人,尤其是那些要使用这个类库的客户程序员,都能访问那个紧跟在public 后面声明的成员. 默认的package: 在同一个目录里面的文件,并且都没有明确指明它是属 ...
- THREE.js代码备份——canvas_lines(随机点、画线)
<!DOCTYPE html> <html lang="en"> <head> <title>three.js canvas - l ...
- 【风马一族_Java】java的一种IDE
IntelliJ IDEA 14 下载地址: IntelliJ IDEA 14 下载 分享几个license: (1) key:IDEA value:61156-YRN2M-5MNCN-NZ8D2-7 ...
- linq 日常关键字使用
1.from var scoreQuery = from student in students from score in student.Scores where score > 90 se ...
- VS2005 VS2008编译的程序在Win7下以管理员身份运行的设置
在VS2005或者VS2008 里面,直接项目右键---属性---连接器---清单文件---uac执行级别 选择requireAdministrator 重新编译 这样你的程序直接运行就拥有管理 ...