1、ajax页面时不能实现下载功能,因为后台下载功能返回的是一个流,而ajax得到后台的数据只能是字符串或字符,所以实现的方法可以:

例如:用js生成一个form,用这个form提交参数,并返回“流”类型的数据。在实现过程中,页面也没有进行刷新。

  1. var form=$("<form>");//定义一个form表单
  2. form.attr("style","display:none");
  3. form.attr("target","");
  4. form.attr("method","post");
  5. form.attr("action","exportData");
  6. var input1=$("<input>");
  7. input1.attr("type","hidden");
  8. input1.attr("name","exportData");
  9. input1.attr("value",(new Date()).getMilliseconds());
  10. $("body").append(form);//将表单放置在web中
  11. form.append(input1);
  12.  
  13. form.submit();//表单提交

2、在页面内有多文件上传时,存在一个链接来进行文件下载时,可以使用第1个方法实现。

3、在页面内有多文件上传时,存在一个链接来进行文件删除时,使用ajax向后台传递参数,参数封装在data中,同时将contentType设置为application/x-www-form-urlencoded;charset=utf-8,这样后台便可以得到参数。

4、ajax传递参数方法有:

①使用默认contentType,参数追加到url后传递

  1. $.ajax({
  2. url: "http://localhost:8082/boot/request/parameter?name=aaa&paraB=bbb",
  3. contentType: "application/x-www-form-urlencoded;charset=utf-8",
  4. success: function(json){
  5. console.log(json);
  6. }
  7. });
  1. //请求中包含的参数的名称
  2. Enumeration<String> parameterNames = request.getParameterNames();
  3. while (parameterNames.hasMoreElements()) {
  4. String s = parameterNames.nextElement();
  5. System.out.println("getParameterNames:" + s);
  6. String paraA = request.getParameter(s);
  7. System.out.println("getParameter:" + paraA);
  8. }
  9.  
  10. // 返回包含在路径后的请求 URL 中的查询字符串
  11. String queryString = request.getQueryString();
  12. System.out.println("getQueryString:" + queryString);

②使用默认contentType,参数放到data中传递

  1. $.ajax({
  2. url: "http://localhost:8082/boot/request/parameter",
  3. contentType: "application/x-www-form-urlencoded;charset=utf-8",
  4. data: {name: "aaa", paraB:"bbb"},
  5. success: function(json){
  6. console.log(json);
  7. }
  8. });
  1. //请求中包含的参数的名称
  2. Enumeration<String> parameterNames = request.getParameterNames();
  3. while (parameterNames.hasMoreElements()) {
  4. String s = parameterNames.nextElement();
  5. System.out.println("getParameterNames:" + s);
  6. String paraA = request.getParameter(s);
  7. System.out.println("getParameter:" + paraA);
  8. }

③用默认contentType,data中传递数组

  1. $.ajax({
  2. url: "http://localhost:8082/boot/request/parameter",
  3. type: "post",
  4. contentType: "application/x-www-form-urlencoded;charset=utf-8",
  5. data: {foo: ["bar1", "bar2"]},
  6. success: function (json) {
  7. console.log(json);
  8. }
  9. });
  1. // 返回一个字符串对象的数组
  2. String[] parameterValues = request.getParameterValues("foo[]");
  3. if (parameterValues != null) {
  4. for (String parameterValue : parameterValues) {
  5. System.out.println("getParameterValues:" + parameterValue);
  6. }
  7. }

④使用contentType为application/json,在data中传递复杂参数

  1. $.ajax({
  2. url: "http://localhost:8082/boot/request/parameter",
  3. type: "post",
  4. contentType: "application/json;charset=utf-8",
  5. data: JSON.stringify({name: "aaa", foo: ["bar1", "bar2"]}),
  6. success: function (json) {
  7. console.log(json);
  8. }
  9. });
  1. // 以二进制数据形式检索请求的主体
  2. ServletInputStream inputStream = request.getInputStream();
  3. BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
  4. String line = "";
  5. StringBuilder sb = new StringBuilder();
  6. while ((line = br.readLine()) != null) {
  7. sb.append(line);
  8. }
  9. System.out.println("getInputStream:" + sb);

⑤使用contentType为application/json,在data中传递复杂参数,并使用springmvc接收

  1. $.ajax({
  2. url: "http://localhost:8082/boot/request2/requestBody",
  3. type: "post",
  4. contentType: "application/json;charset=utf-8",
  5. data: JSON.stringify({id: 111, name: "aaa", foo: ["bar1", "bar2"]}),
  6. success: function (json) {
  7. console.log(json);
  8. }
  9. });
  1. @RequestMapping(value = "/requestBody")
  2. public void RequestBody(@RequestBody User user) throws IOException {
  3. System.out.println(user.toString());
  4. }

⑥url追加参数与data中放json同时使用

  1. $.ajax({
  2. // url: "http://localhost:8082/boot/request/parameter?userName=aaa",
  3. url: "http://localhost:8082/boot/request2/parm?userName=aaa",
  4. type: "post",
  5. contentType: "application/json;charset=utf-8",
  6. data: JSON.stringify({id: 111, name: "aaa", foo: ["bar1", "bar2"]}),
  7. async:false,
  8. success: function (json) {
  9. console.log(json);
  10. }
  11. });
  1. //请求中包含的参数的名称
  2. Enumeration<String> parameterNames = request.getParameterNames();
  3. while (parameterNames.hasMoreElements()) {
  4. String s = parameterNames.nextElement();
  5. System.out.println("getParameterNames:" + s);
  6. String paraA = request.getParameter(s);
  7. System.out.println("getParameter:" + paraA);
  8. }
  9. // 以二进制数据形式检索请求的主体
  10. ServletInputStream inputStream = request.getInputStream();
  11. BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
  12. String line = "";
  13. StringBuilder sb = new StringBuilder();
  14. while ((line = br.readLine()) != null) {
  15. sb.append(line);
  16. }
  17. System.out.println("getInputStream:" + sb);
  1. RequestMapping(value = "/parm")
  2. public void parm(@RequestParam String userName, @RequestBody User user) throws IOException {
  3. System.out.println("userName:" + userName);
  4. System.out.println(user.toString());
  5. }

参考文章:https://www.cnblogs.com/ooo0/p/10535278.html

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

  1. 状态保持以及AJAX的初步学习

    嘿嘿,今天学习的有点迷茫哦,主要学习把验证码使用在登录页面时间的一些逻辑,学习这个时间并没有那么的迷惑哦,可是自己写程序时间倒是有点反应迟钝,不过还好总是在最后搞清楚啦,另外就是一步一步的学习是接近项 ...

  2. Ajax的初步认识

    1.背景 2005年,JJG发表了一篇在线文章,介绍了AJAX(Asynchronous Javascript + XML),这项技术能够向服务器请求额外数据而无须卸载页面,说是改变了以前的“单击”, ...

  3. websocket 初步使用经验(python)

    想实现网页前端和后端的数据同步交互,就有必要使用 websocket 的方式进行通信. python websocket github 地址:git@github.com:Aplexchenfl/py ...

  4. 转:ASP.NET 使用Ajax

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

  5. ASP.NET 使用Ajax(转)

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

  6. 使用Ajax

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

  7. 对学习Ajax的知识总结

    1.对Ajax的初步认识 1.1. Ajax 是一种网页开发技术,(Asynchronous Javascript + XML)异步 JavaScript 和 XML: 1.2.Ajax 是异步交互, ...

  8. JQuery中的Ajax(六)

    一:Ajax请求jQuery.ajax(options) load(url,[data],[callback])jQuery.get(url,[data],[callback]) jQuery.get ...

  9. $.ajax()方法和$.get()方法使用小结

    一. 使用JQuery的$.get()方法实现异步请求 1. 编写JSP <!DOCTYPE html> <html lang="en"> <head ...

随机推荐

  1. git反悔

    Checkout checkout命令用于从历史提交(或者暂存区域)中拷贝文件到工作目录,也可用于切换分支. ![](./_image/2016-07-14 21-26-37.jpg?r=49) ![ ...

  2. 【转】OJ提交时G++与C++的区别

    关于G++ 首先更正一个概念,C++是一门计算机编程语言,G++不是语言,是一款编译器中编译C++程序的命令而已.那么他们之间的区别是什么? 在提交题目中的语言选项里,G++和C++都代表编译的方式. ...

  3. Git 命令及git服务器

    Linux 服务器上安装git yum -y install git git config  --global user.name "name" git config  --glo ...

  4. 跨站访问如何保证session的正常使用

    1.最近公司开发了一个网站项目,一切顺利.由于网页没有兼容手机浏览器,后来添加了一个webapp端,独立于另一个站点,用于解决兼容手机浏览器的问题.其中webapp端的数据全部通过ajax进行请求另一 ...

  5. webdriver保存验证码截图

    element = wait.until ( EC.visibility_of_element_located((By.CSS_SELECTOR,'.quc-main .quc-field-captc ...

  6. [NOIP2017普及组]棋盘

    题目 题目描述 有一个m × m的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的),你只 ...

  7. 哨兵2 NDVI

    shp从国外网站下载的,不是很准确了 数据:COPERNICUS/S2 交流合作请联系:ab000c@163.com

  8. Java里面使用Date.compareTo比较时间

    DateFormat dateFormat = DateFormat.getDateInstance(); Date oldTime = dateFormat.parse("2019-04- ...

  9. SQL进阶1:case表达式的用法示例

    一:case表达式的用法 1.SQL中的case表达式的作用是用来对"某个变量"进行某种转化,通常在select字句中使用,举个例子: 不能看出,case表达式很像我们的if el ...

  10. QT4.8应用控制程序设计

    2012-02-20 22:06:59 从uboot到kernel最新版最后到QT最新版移植都完成后,从初级阶段要走向中级阶段了.初步一个设想是然2440通过QT界面控制小车.先做一个界面模块控制LE ...