毕业设计《项目管理》总结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
转载于:https://www.cnblogs.com/xiaxiaoshu/p/10755136.html
毕业设计《项目管理》总结06之ajax的初步使用经验相关推荐
- JavaWeb前端之AJAX的初步学习
l AJAX的优点: 1. 最大的一点是页面没有刷新,在页面内与服务器通讯,给用户的体验非常好. 2. 使用异步的方式与服务器通讯,不需要打断用户的操作,具有更加 ...
- js ajax通用方法,JS—Ajax(初步使用)
Ajax Asynchronous JavaScript XML 这一技术最早是用来向服务器端请求以xml这种结构表示的数据时,可以不用卸载页面,就能够向服务器端请求额外的数据. 但是现在呢,Ajax ...
- [导入]Ajax使用初步
文章来源:http://blog.csdn.net/21aspnet/archive/2007/03/19/1534299.aspx 转载于:https://www.cnblogs.com/zhaox ...
- python numba_Numba初步使用经验
Numba是Python的一个JIT库,可以很方便的通过一个装饰器来实现运行时的加速.这两天初步使用了一下,有点心得体会: 1, numba喜欢for循环,有for循环的python代码(看起来像C的 ...
- Ajax初步(小山)
Ajax定义为"Asynchronous JavaScript + XML"的简称,也就是异步的JavaScript和XML处理.从原理上看,主要是Ajax可以通过调用HttpRe ...
- ajax技术实战-张晨光-专题视频课程
ajax技术实战-44人已学习 课程介绍 AJAX 的英语原意是"异步的 Javascript 和 XML". 这个本意对于我们现在理解日常的 Ajax 操作已经没 ...
- ASP.NET 使用Ajax(转)
之前在Ajax初步理解中介绍了对Ajax的初步理解,本文将介绍在ASP.NET中如何方便使用Ajax,第一种当然是使用jQuery的ajax,功能强大而且操作简单方便,第二种是使用.NET封装好的Sc ...
- 【Python爬虫学习笔记12】Ajax数据爬取简介
有时候在我们设计利用requests抓取网页数据的时候,会发现所获得的结果可能与浏览器显示给我们的不一样:比如说有的信息我们通过浏览器可以显示,但一旦用requests却得不到想要的结果.这种现象是因 ...
- ASP.NET 使用Ajax
之前在Ajax初步理解中介绍了对Ajax的初步理解,本文将介绍在ASP.NET中如何方便使用Ajax,第一种当然是使用jQuery的ajax,功能强大而且操作简单方便,第二种是使用.NET封装好的Sc ...
- 【项目管理】------九大项目管理框架 (
项目整体管理 框架 过程 依据 工具和技术 输出 制订项目章程 1.合同: 2.项目工作说明书(SOW); 3.项目论证信息: 4.事业环境因素: 5.组织过程资产 1.专家判断: 2.项目 ...
最新文章
- 科宇扫地机器人_我的三年16台智能扫地机器人使用回忆录 篇四:扫地谁更精准更干净?新一代3D视讯+激光成像 PK 老式激光扫描,万字实测对比分享...
- 2011年11月份第一周51Aspx源码发布详情
- 【Python】分享14条非常实用的Pandas函数方法,建议珍藏!!
- 51 Nod 1509 加长棒(巧妙的隔板法计数)
- Windows sever 2008 动态硬盘数据恢复
- LAMP部署脚本--安装篇
- ThinkPHP 3.2.3 关联模型的使用
- linux下mysql5.7修改密码
- DR.com客户端解密过程逆向分析
- 解决VS2017引用报错问题
- 我密集面试了若干位Java后端的候选人,给广大程序员的一点建议
- 【英语学习】【医学】Unit 08 The Cardiovascular System
- 一段JS代码实现光标定位输入框文字最后
- 使用Chef管理windows集群
- 推荐|Java学习资料大全(电子书+视频)
- 分享一个奇葩SM2258XT板子(100-H00112581-590)没有CE跳线,只有CE飞线,顺便量产开卡
- Netty系列三、Netty实战篇
- 中国半导体仍然弱小 产业生态体系亟需完善
- js根据银行卡号进行判断属于哪个银行并返回银行卡类型
- 使用 Wrapper 自定义SQL