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&paraB=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

转载于:https://www.cnblogs.com/xiaxiaoshu/p/10755136.html

毕业设计《项目管理》总结06之ajax的初步使用经验相关推荐

  1. JavaWeb前端之AJAX的初步学习

    l  AJAX的优点: 1.          最大的一点是页面没有刷新,在页面内与服务器通讯,给用户的体验非常好. 2.          使用异步的方式与服务器通讯,不需要打断用户的操作,具有更加 ...

  2. js ajax通用方法,JS—Ajax(初步使用)

    Ajax Asynchronous JavaScript XML 这一技术最早是用来向服务器端请求以xml这种结构表示的数据时,可以不用卸载页面,就能够向服务器端请求额外的数据. 但是现在呢,Ajax ...

  3. [导入]Ajax使用初步

    文章来源:http://blog.csdn.net/21aspnet/archive/2007/03/19/1534299.aspx 转载于:https://www.cnblogs.com/zhaox ...

  4. python numba_Numba初步使用经验

    Numba是Python的一个JIT库,可以很方便的通过一个装饰器来实现运行时的加速.这两天初步使用了一下,有点心得体会: 1, numba喜欢for循环,有for循环的python代码(看起来像C的 ...

  5. Ajax初步(小山)

    Ajax定义为"Asynchronous JavaScript + XML"的简称,也就是异步的JavaScript和XML处理.从原理上看,主要是Ajax可以通过调用HttpRe ...

  6. ajax技术实战-张晨光-专题视频课程

    ajax技术实战-44人已学习 课程介绍         AJAX 的英语原意是"异步的 Javascript 和 XML". 这个本意对于我们现在理解日常的 Ajax 操作已经没 ...

  7. ASP.NET 使用Ajax(转)

    之前在Ajax初步理解中介绍了对Ajax的初步理解,本文将介绍在ASP.NET中如何方便使用Ajax,第一种当然是使用jQuery的ajax,功能强大而且操作简单方便,第二种是使用.NET封装好的Sc ...

  8. 【Python爬虫学习笔记12】Ajax数据爬取简介

    有时候在我们设计利用requests抓取网页数据的时候,会发现所获得的结果可能与浏览器显示给我们的不一样:比如说有的信息我们通过浏览器可以显示,但一旦用requests却得不到想要的结果.这种现象是因 ...

  9. ASP.NET 使用Ajax

    之前在Ajax初步理解中介绍了对Ajax的初步理解,本文将介绍在ASP.NET中如何方便使用Ajax,第一种当然是使用jQuery的ajax,功能强大而且操作简单方便,第二种是使用.NET封装好的Sc ...

  10. 【项目管理】------九大项目管理框架 (

    项目整体管理 框架 过程 依据 工具和技术 输出 制订项目章程 1.合同:  2.项目工作说明书(SOW);  3.项目论证信息:  4.事业环境因素:  5.组织过程资产 1.专家判断:  2.项目 ...

最新文章

  1. 科宇扫地机器人_我的三年16台智能扫地机器人使用回忆录 篇四:扫地谁更精准更干净?新一代3D视讯+激光成像 PK 老式激光扫描,万字实测对比分享...
  2. 2011年11月份第一周51Aspx源码发布详情
  3. 【Python】分享14条非常实用的Pandas函数方法,建议珍藏!!
  4. 51 Nod 1509 加长棒(巧妙的隔板法计数)
  5. Windows sever 2008 动态硬盘数据恢复
  6. LAMP部署脚本--安装篇
  7. ThinkPHP 3.2.3 关联模型的使用
  8. linux下mysql5.7修改密码
  9. DR.com客户端解密过程逆向分析
  10. 解决VS2017引用报错问题
  11. 我密集面试了若干位Java后端的候选人,给广大程序员的一点建议
  12. 【英语学习】【医学】Unit 08 The Cardiovascular System
  13. 一段JS代码实现光标定位输入框文字最后
  14. 使用Chef管理windows集群
  15. 推荐|Java学习资料大全(电子书+视频)
  16. 分享一个奇葩SM2258XT板子(100-H00112581-590)没有CE跳线,只有CE飞线,顺便量产开卡
  17. Netty系列三、Netty实战篇
  18. 中国半导体仍然弱小 产业生态体系亟需完善
  19. js根据银行卡号进行判断属于哪个银行并返回银行卡类型
  20. 使用 Wrapper 自定义SQL

热门文章

  1. struts2 jsp提交对象数据要这么干
  2. Wamp在重新装机后不想配置
  3. 学术 | 如何写一篇学术论文?(下)
  4. 女学霸考692分想当“程序媛”,网友:快劝劝孩子
  5. 【论文分享】ACL 2020 图神经网络在自然语言处理中的应用
  6. ACL 2020投稿破 3 千,到底有多少人在做 NLP 研究?
  7. 【中秋快乐】求问meta-learning和few-shot learning的关系是什么?
  8. 【机器学习】如何处理数据不均衡问题
  9. 为什么要使用向量化?
  10. 基于NumPy手写神经网络