窗口 - dialog - 与后端交互
与后端交互,一般需要提交表单数据,所以,这次渲染得dialog其实是一个<form>
<form id="loginForm">
<table align="center">
<tr>
<th align="right">用户名</th>
<td>
<input type="text" name="username"/>
</td>
</tr>
<tr>
<th align="right">密码</th>
<td>
<input type="password" name="password"/>
</td>
</tr>
</table>
</form> 使用JS的方式渲染表单为对话框
<script type="text/javascript">
var loginForm;//被循环选择的对象提取出来,这样就用选择器选择一次就够了
$(function () {
loginForm = $("#loginForm").dialog({
title: "登陆",
width: 250,
height: 150,
modal: true,
closable: false,//登录框不允许关闭,所有去掉关闭按钮
buttons: [
{
text: "登陆",
handler: function () {
console.log("登陆");
}
}, {
text: "注册",
handler: function () {
console.log("注册");
}
}
]
});
})
</script> 其实用window组件也能做登录框,但是考虑到如果使用window组件的话,还得自己编写两个(甚至三个)按钮, 所以就使用dialog,直接使用其buttons属性,在底部渲染出两个按钮。以上,用console.log()的方式模拟了等于与注册的操作。
那么如何真实的与后端进行交互呢?
有两种方式
- 第一种:Ajax
var formData = {
username:$("input[name='username']").val(),
password:$("input[name='password']").val(),
};
$.ajax({
type:"POST",
url:"<%=homePage%>/testController/login.ajax?type=json",
dataType:"JSON",//预期服务器返回的数据类型
contentType:"application/json;charset=UTF-8",//发送的数据类型
data:JSON.stringify(formData),//将JSON对象转化成JSON的字符串形式
success:function(data){
if ("0" == data.st){
console.log("登陆成功");
}else{
console.log("登陆失败");
}
}
})
对应的后端
@RequestMapping(value = "/login.ajax",params = "type=json")
@ResponseBody
public Map<String,String> login1(@RequestBody Map<String, String> map){
logger.debug("请求参数:"+map); Map<String,String> map1 = login(map); return map1;
} 说明:前端发送给后端的所有数据,本质上都只可能是字符串,所以,当我在发送Ajax请求的时候,因为指定了 contentType 为 application/json,所以,需要将json对象转换成JSON字符串。而使用Spring MVC作为后端在接收的时候,需要使用@RequestBody注解,该注解将JSON字符串转换成指定的对象,这里转换成了Map 如果不希望通过JSON字符串发送,则可以如下:
handler: function () {
console.log("登陆");
var formData = {
username:$("input[name='username']").val(),
password:$("input[name='password']").val(),
};
$.ajax({
type:"POST",
url:"<%=homePage%>/testController/login.ajax?type=form",
dataType:"JSON",//预期服务器返回的数据类型
data:formData,
success:function(data){
if ("0" == data.st){
console.log("登陆成功");
}else{
console.log("登陆失败");
}
}
})
}
发送的时候不指定发送的类型,默认是 application/x-www-form-urlencoded; 就是k1=v1&k2=v2 的字符串形式
后端也要做相应的改动
@RequestMapping(value = "/login.ajax",params = "type=form")
@ResponseBody
public Map<String,String> login2(@RequestParam Map<String, String> map){
logger.debug("请求参数:"+map); Map<String,String> map1 = login(map);
return map1;
}
ajax方法还有很多其他参数,这里就不展开了,详见文档 上述过程有一个问题,那就是两个表单参数都是自己手动获取的,有没有什么方法,能够获取某个表单中的全部数据呢?答案当然是肯定的
data:$("#loginForm").serialize(),
对表单执行 serialize() 方法后,就能够将表单中的输入域全部转化成 k1=v1&k2=v2 的形式传递给后台,Spring MVC通过@RequestParam注解接收(其实不写也行,就使用一个Map或者cmd对象)
- 第二种:EasyUI的Form表单组件
见Form组件的使用
窗口 - dialog - 与后端交互的更多相关文章
- 微信小程序 + thinkjs + mongoDB 实现简单的前后端交互
说明:这段时间跟老师学习了一下mongodb数据库,这次也是第一次搭建后台服务,出了不少差错,特此来复盘一下,非常感谢对我提供帮助的同学~ 一.使用 thinkjs + mongodb 创建后台服务 ...
- web前后端交互,nodejs
手机赚钱怎么赚,给大家推荐一个手机赚钱APP汇总平台:手指乐(http://www.szhile.com/),辛苦搬砖之余用闲余时间动动手指,就可以日赚数百元 web前后端交互 前后端交互可以采用混合 ...
- 微信App支付接入步骤&支付中前后端交互流程
最近对微信App支付(App端集成微信支付SDK)申请步骤,以及终端在进行微信支付时商户App.商户Server.微信App.微信支付Server的交互流程进行了简单了解.这篇文章应该算是学习笔记,分 ...
- Node之简单的前后端交互
node是前端必学的一门技能,我们都知道node是用的js做后端,在学习node之前我们有必要明白node是如何实现前后端交互的. 这里写了一个简单的通过原生ajax与node实现的一个交互,刚刚学n ...
- Django之META与前后端交互
Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请 ...
- 前后端交互实现(nginx,json,以及datatable的问题相关)
1.同源问题解决 首先,在同一个域下搭建网络域名访问,需要nginx软件,下载之后修改部分配置 然后再终端下cmd nginx.exe命令,或者打开nginx.exe文件,会运行nginx一闪而过, ...
- springboot+mybatis+thymeleaf项目搭建及前后端交互
前言 spring boot简化了spring的开发, 开发人员在开发过程中省去了大量的配置, 方便开发人员后期维护. 使用spring boot可以快速的开发出restful风格微服务架构. 本文将 ...
- 百度ueditor的图片上传,前后端交互使用
百度ueditor的使用 一个文本编辑器,看了网上很多文档写的很乱,这里拾人牙慧,整理下怎么使用. 这个东西如果不涉及到图片附件上传,其实很简单,就是几个前端文件,直接引用,然后配置下ueditor. ...
- SSM-网站后台管理系统制作(4)---Ajax前后端交互
前提:Ajax本身就为前后端交互服务的,实现功能:用户输入信息,实时判断用户的情况,这也是现在登录界面普遍流行的做法.前端js通过注释识别Controller层,该层查询返回,和之前Google验证码 ...
随机推荐
- 深入.net(多态二)
代码优化技术: 通过“继承”技术,实现代码的复用,减少代码的编写量. 因为子类继承父类,拥有了父类所有对外公开“属性”和“方法”,所以,在系统中,完全可以由子类替代父类(里氏替换原则)!在替代的过程中 ...
- HTML5气泡悬浮框(已经加上完整文件)
源文件链接:http://pan.baidu.com/s/1pKHlNSn 设计气泡悬浮框 1.在网页设计中,气泡悬浮框常常用于页面中为某些对象显示提示信息,恰当地使用气泡悬浮框能够使网页布局更加完美 ...
- 面试问题4:C语言预处理包括哪些
问题描述:C语言 预处理包括哪些操作 C语言的三种预处理包括:宏定义(#define).文件包含(#include).条件编译(#if.#else.#endif). 对于宏定义的介绍: 宏定义必须写在 ...
- 分享php工作中遇到的一些探究和技巧【1】
一 foreach的引用 $arr = range(,); //[1,2,3] foreach($arr as &$val) { } foreach($arr as $val) { } pri ...
- js平滑返回顶部代码
随便找的一个,使用时直接调用gotoTop就行了,至于调速度之类的我没试,有兴趣的自己试试吧 注意:如果你想改变这个函数的名称千万不要忘了要同时改变第37行的那个gotoTop /** * JavaS ...
- dotNET使用DRPC远程调用运行在Storm上的Topology
Distributed RPC(DRPC)是Storm构建在Thrift协议上的RPC的实现,DRPC使得你可以通过多种语言远程的使用Storm集群的计算能力.DRPC并非Storm的基础特性,但它确 ...
- Tomcat 目录详解
一.文字版本: bin: 该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat6.exe.tomcat6w.exe,前者是在控制台下启动Tomcat,后者是 ...
- 常用的js跳转页面方法实现汇总
1.window.location.href方式 <script language="javascript" type="text/javascript" ...
- android 关于appcompat v7出错问题与解决
1.appcompat_v7:应用兼容包,V7说的是版本7,即android2.1,这个兼容包支持2.1版本以上系统2.最近谷歌官方将兼容jar包与某些资源文件单独拿出来建立了一个android工程, ...
- STM32学习笔记——USART串口
转载自:http://www.cnblogs.com/microxiami/p/3752715.html 一.USART简介 通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异 ...