毕业设计《项目管理》总结06之ajax的初步使用经验
1、ajax页面时不能实现下载功能,因为后台下载功能返回的是一个流,而ajax得到后台的数据只能是字符串或字符,所以实现的方法可以:
例如:用js生成一个form,用这个form提交参数,并返回“流”类型的数据。在实现过程中,页面也没有进行刷新。
var form=$("<form>");//定义一个form表单
form.attr("style","display:none");
form.attr("target","");
form.attr("method","post");
form.attr("action","exportData");
var input1=$("<input>");
input1.attr("type","hidden");
input1.attr("name","exportData");
input1.attr("value",(new Date()).getMilliseconds());
$("body").append(form);//将表单放置在web中
form.append(input1);
form.submit();//表单提交
2、在页面内有多文件上传时,存在一个链接来进行文件下载时,可以使用第1个方法实现。
3、在页面内有多文件上传时,存在一个链接来进行文件删除时,使用ajax向后台传递参数,参数封装在data中,同时将contentType设置为application/x-www-form-urlencoded;charset=utf-8,这样后台便可以得到参数。
4、ajax传递参数方法有:
①使用默认contentType,参数追加到url后传递
$.ajax({
url: "http://localhost:8082/boot/request/parameter?name=aaa¶B=bbb",
contentType: "application/x-www-form-urlencoded;charset=utf-8",
success: function(json){
console.log(json);
}
});
//请求中包含的参数的名称
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String s = parameterNames.nextElement();
System.out.println("getParameterNames:" + s);
String paraA = request.getParameter(s);
System.out.println("getParameter:" + paraA);
} // 返回包含在路径后的请求 URL 中的查询字符串
String queryString = request.getQueryString();
System.out.println("getQueryString:" + queryString);
②使用默认contentType,参数放到data中传递
$.ajax({
url: "http://localhost:8082/boot/request/parameter",
contentType: "application/x-www-form-urlencoded;charset=utf-8",
data: {name: "aaa", paraB:"bbb"},
success: function(json){
console.log(json);
}
});
//请求中包含的参数的名称
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String s = parameterNames.nextElement();
System.out.println("getParameterNames:" + s);
String paraA = request.getParameter(s);
System.out.println("getParameter:" + paraA);
}
③用默认contentType,data中传递数组
$.ajax({
url: "http://localhost:8082/boot/request/parameter",
type: "post",
contentType: "application/x-www-form-urlencoded;charset=utf-8",
data: {foo: ["bar1", "bar2"]},
success: function (json) {
console.log(json);
}
});
// 返回一个字符串对象的数组
String[] parameterValues = request.getParameterValues("foo[]");
if (parameterValues != null) {
for (String parameterValue : parameterValues) {
System.out.println("getParameterValues:" + parameterValue);
}
}
④使用contentType为application/json,在data中传递复杂参数
$.ajax({
url: "http://localhost:8082/boot/request/parameter",
type: "post",
contentType: "application/json;charset=utf-8",
data: JSON.stringify({name: "aaa", foo: ["bar1", "bar2"]}),
success: function (json) {
console.log(json);
}
});
// 以二进制数据形式检索请求的主体
ServletInputStream inputStream = request.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
System.out.println("getInputStream:" + sb);
⑤使用contentType为application/json,在data中传递复杂参数,并使用springmvc接收
$.ajax({
url: "http://localhost:8082/boot/request2/requestBody",
type: "post",
contentType: "application/json;charset=utf-8",
data: JSON.stringify({id: 111, name: "aaa", foo: ["bar1", "bar2"]}),
success: function (json) {
console.log(json);
}
});
@RequestMapping(value = "/requestBody")
public void RequestBody(@RequestBody User user) throws IOException {
System.out.println(user.toString());
}
⑥url追加参数与data中放json同时使用
$.ajax({
// url: "http://localhost:8082/boot/request/parameter?userName=aaa",
url: "http://localhost:8082/boot/request2/parm?userName=aaa",
type: "post",
contentType: "application/json;charset=utf-8",
data: JSON.stringify({id: 111, name: "aaa", foo: ["bar1", "bar2"]}),
async:false,
success: function (json) {
console.log(json);
}
});
//请求中包含的参数的名称
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String s = parameterNames.nextElement();
System.out.println("getParameterNames:" + s);
String paraA = request.getParameter(s);
System.out.println("getParameter:" + paraA);
}
// 以二进制数据形式检索请求的主体
ServletInputStream inputStream = request.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
System.out.println("getInputStream:" + sb);
RequestMapping(value = "/parm")
public void parm(@RequestParam String userName, @RequestBody User user) throws IOException {
System.out.println("userName:" + userName);
System.out.println(user.toString());
}
参考文章:https://www.cnblogs.com/ooo0/p/10535278.html
毕业设计《项目管理》总结06之ajax的初步使用经验的更多相关文章
- 状态保持以及AJAX的初步学习
嘿嘿,今天学习的有点迷茫哦,主要学习把验证码使用在登录页面时间的一些逻辑,学习这个时间并没有那么的迷惑哦,可是自己写程序时间倒是有点反应迟钝,不过还好总是在最后搞清楚啦,另外就是一步一步的学习是接近项 ...
- Ajax的初步认识
1.背景 2005年,JJG发表了一篇在线文章,介绍了AJAX(Asynchronous Javascript + XML),这项技术能够向服务器请求额外数据而无须卸载页面,说是改变了以前的“单击”, ...
- websocket 初步使用经验(python)
想实现网页前端和后端的数据同步交互,就有必要使用 websocket 的方式进行通信. python websocket github 地址:git@github.com:Aplexchenfl/py ...
- 转:ASP.NET 使用Ajax
之前在Ajax初步理解中介绍了对Ajax的初步理解,本文将介绍在ASP.NET中如何方便使用Ajax,第一种当然是使用jQuery的ajax,功能强大而且操作简单方便,第二种是使用.NET封装好的Sc ...
- ASP.NET 使用Ajax(转)
之前在Ajax初步理解中介绍了对Ajax的初步理解,本文将介绍在ASP.NET中如何方便使用Ajax,第一种当然是使用jQuery的ajax,功能强大而且操作简单方便,第二种是使用.NET封装好的Sc ...
- 使用Ajax
ASP.NET 使用Ajax 之前在Ajax初步理解中介绍了对Ajax的初步理解,本文将介绍在ASP.NET中如何方便使用Ajax,第一种当然是使用jQuery的ajax,功能强大而且操作简单方便 ...
- 对学习Ajax的知识总结
1.对Ajax的初步认识 1.1. Ajax 是一种网页开发技术,(Asynchronous Javascript + XML)异步 JavaScript 和 XML: 1.2.Ajax 是异步交互, ...
- JQuery中的Ajax(六)
一:Ajax请求jQuery.ajax(options) load(url,[data],[callback])jQuery.get(url,[data],[callback]) jQuery.get ...
- $.ajax()方法和$.get()方法使用小结
一. 使用JQuery的$.get()方法实现异步请求 1. 编写JSP <!DOCTYPE html> <html lang="en"> <head ...
随机推荐
- KeepAlived+HaProxy+MyCat+Percona双机热备PXC集群
一.搭建PXC集群 1.环境:centos7+PXC5.7.21+mycat1.6.5 2.卸载mariadb rpm -qa | grep mariadb* yum -y remove mariad ...
- Wireshark使用介绍(一):Wireshark基本用法
抓取报文: 下载和安装好Wireshark之后,启动Wireshark并且在接口列表中选择接口名,然后开始在此接口上抓包.例如,如果想要在无线网络上抓取流量,点击无线接口.点击Capture Opti ...
- php 中 global 与 $GLOBAL 的区别
很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然. 根据官方的解释是$GLOBALS['var'] 是外部的全局变量$var本身. global $var 是外部$var的同 ...
- JQuery选择器,动画,事件和DOM操作
JQuery是由JS封装的一些方法,供我们调用,可以快速的实现某些JS功能,实际是JS编写的方法包 将JQuery文件放到JS文件夹下,然后引用到<head></head>中 ...
- Java并发包1--线程的状态及常用方法
一.线程主要有以下几种状态: new(新建):线程刚刚被创建 runnable(就绪):新建的线程执行start方法进入就绪状态等待系统调度分配CPU,被分配了之后就进入运行中状态 blocked(阻 ...
- centos7多网卡配置bond0 (mode6无需交换机做配置)
1.执行setup命令-->网络配置-->本例中四块网卡. 2.ifconfig列出四块网卡. 3.我们的目标,绑定eth0和eth1两块网卡作为公网网卡,ip设置为192.168.0.5 ...
- ceph添加osd(ceph-deploy)
修改主机名和 /etc/hosts 关闭防火墙和 SELINUX 安装和配置 NTP ceph-deploy 节点安装 安装 ceph-deploy sudo yum install ceph-dep ...
- 利用 html js判断 客户端是否安装了某个app 安装了就打开 否则跳转到gp
三种方式 方式一:简单的进行打开app,延时操作若未打开直接跳gp function isInstalled(){ var urlFrag = 'somepars'; var the_href = ' ...
- Java8分组(groupingBy)
1.分组,计数,排序 public class Java8Example1 { public static void main(String[] args) { List<String> ...
- LightGBM算法(转载)
原文:https://blog.csdn.net/niaolianjiulin/article/details/76584785 前者的含义是轻量级,GBM:梯度上升机. 相较于xgboost: 更快 ...