博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery-ajax
阅读量:6263 次
发布时间:2019-06-22

本文共 2345 字,大约阅读时间需要 7 分钟。

hot3.png

jQuery-ajax常见属性

contentType

含义:发送信息至服务器时的内容编码类型

类型:String 或 Boolean
默认值:"application/x-www-form-urlencoded; charset=UTF-8";默认值适合大多数情况
注:jQuery-1.6之后可以将此属性设为 false,当该属性为false时,即告诉服务器不设置任何一种 contentType

dataType

含义:预期服务器返回的数据类型

类型:String
默认值:如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,可用值:
"xml":返回 XML 文档,可用 jQuery 处理
"html":返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行
"script":返回纯文本 javascript 代码;不会自动缓存结果;除非设置了 "cache" 参数
"json":返回 json 数据
"jsonp":JSONP 格式
"text":返回纯文本字符串

processData

含义:发送 data 至服务器时将 data 进行转化

类型:Boolean
默认值:true;默认情况下,通过 data 选项传递至服务器的数据,如果是一个对象(技术上讲只要不是字符串),都会默认转换成一个查询字符串,以配合默认的 内容类型(contentType) "application/x-www-form-urlencoded";如果要发送 DOM 数信息或其它不希望转换的信息(例如 file),请设置为 false

jQuery-ajax 常见问题

  • 在使用 jQuery-ajax 实现异步文件上传时要注意,要将 contentType 和 processData 属性设置为 false;否则服务器接收不了上传的文件

示例

$("#ajax_upload").click(function () {            var formData = new FormData();            formData.append("file",document.getElementById("file0").files[0]);            $.ajax({                url : "ajaxUpload",                data : formData,                type : "post",                contentType:false,                processData:false,                success : function(response){                    console.log(response);                }            });        });

注:

  1. contentType 默认值为 "application/x-www-form-urlencoded; charset=UTF-8",而文件上传的 contentType 应该为 "multipart/form-data",将 contentType 设置为 false 后,服务器检测到上传的是文件类型时,会自动将request headers中的 contentType 设置为 "multipart/form-data"
  2. 上传文件时向服务器传输的是文件类型,此时不需要将数据转换为查询字符串,就保持为文件本身,因此要将 processData 设置为 false
  3. jQuery 的 id 选择器获取不了文件对象(不知怎么回事),使用原生 javascript 的 document.getElementById 可以获取
  • 在 controller 方法中返回 String 时要注意,若返回的字符串包含中文,则需要在 @RequestMapping 中加上 produces = {"text/html;charset=UTF-8;"},否则会出现中文乱码

示例

@RequestMapping(value = "ajaxDemo",produces = {"text/html;charset=UTF-8;"})    @ResponseBody    public String ajaxDemo(String username){        System.out.println(username);        return username;    }

注:

  1. controller 中的方法返回是 String 时,jQuery-ajax 中的 daatType 属性应该设置为 "text",而不能设置为 "json"
  2. springMVC 中有一系列 HttpMessageConverter 来处理用 @ResponseBody 注解的返回值,如返回 List 或其它的类型则使用 MappingJacksonHttpMessageConverter 来处理;返回 String 时,则使用 StringHttpMessageConverter 来处理,而 StringHttpMessageConverter 使用的字符集时 iso-8859-1,而且是 fianl的。所以当返回 text 有中文时会出现乱码

转载于:https://my.oschina.net/u/4132929/blog/3054105

你可能感兴趣的文章
人工智能和机器学习领域的一些有趣的开源项目
查看>>
python sorted排序
查看>>
python中xrange和range的异同
查看>>
PHP根据ASCII码返回具体的字符
查看>>
atitit.系统架构图 的设计 与工具 attilax总结
查看>>
URAL 1774 A - Barber of the Army of Mages 最大流
查看>>
处理器(CPU)调度问题
查看>>
leetcode - 位运算题目汇总(下)
查看>>
多少个矩形被覆盖
查看>>
22、ASP.NET MVC入门到精通——搭建项目框架
查看>>
3-7 类的友元函数的应用
查看>>
IntelliJ IDEA安装 一些配置
查看>>
【算法之美】求解两个有序数组的中位数 — leetcode 4. Median of Two Sorted Arrays
查看>>
post请求和get请求
查看>>
零成本实现接口自动化测试 – Java+TestNG 测试Restful service
查看>>
源码安装php时出现Sorry, I cannot run apxs. Possible reasons follow:
查看>>
使用T4模板生成POCO类
查看>>
精度 Precision
查看>>
打印内容函数
查看>>
Mina2 udp--zhengli
查看>>