$.ajax() 发送异步请求
$.ajax({
url:"ajaxServlet1111" , // 请求路径
type:"POST" , //请求方式
contentType:'application/x-www-form-urlencoded',// 默认
//data: "username=jack&age=23",//请求参数
contentType:'application/json',// json格式
// data: "{"username":"jack","age":23}"
data:{"username":"jack","age":23},
success:function (data) {
alert(data);
},//响应成功后的回调函数
error:function () {
alert("出错啦...")
},//表示如果请求响应出现错误,会执行的回调函数
dataType:"text"//设置接受到的响应数据的格式
});
$.get() 发送get请求
$.get(url, [data], [callback], [type])
* 参数:
* url:请求路径
* data:请求参数
* callback:回调函数
* type:响应结果的类型
$.post() 发送post请求
$.post(url, [data], [callback], [type])
* 参数:
* url:请求路径
* data:请求参数
* callback:回调函数
* type:响应结果的类型
ContentType
通知服务器要发送的数据类型
1. application/x-www-form-urlencoded:
- 将 {"username":"jack","age":23} 数据格式转换为 "username=jack&age=23"
- 仅限于简单JSON类型,不带嵌套 ajax 无法处理这种数据
- 嵌套格式数据发送请求后,服务端收到的数据是为空的
2. application/json
- 将 {"username":"jack","age":23} 数据格式转换为 "{"username":"jack","age":23}"
- 因为http可以自定义数据类型,所以有了application/json,就是使用 JSON.stringify对复杂数据序列化传到服务端
- 不使用contentType: “application/json”则data可以是对象,使用之后,data必须为json对象
- $.ajax({
dataType: 'json',
contentType: 'application/json',
data: JSON.stringify({a: [{b:1, a:1}]})
})
dataType
告诉服务器,想要接收什么类型的数据,如果没有指定,那么会自动推断是返回 XML,还是JSON,还是script,还是String。
- xml: 返回 XML 文档,可用 jQuery 处理。
- html: 返回纯文本 HTML 信息;包含的 script 标签会在插入dom时执行。
- script: 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了cache” 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
- json: 返回 JSON 数据 。
- jsonp: JSONP 格式。使用 JSONP 形式调用函数时,如 “myurl?callback=?” jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
- text: 返回纯文本字符串
- dataType值如果为’json’,jquery就会把后端返回的字符串尝试通过JSON.parse()尝试解析为js对象。
- dataType值如果为’text’,结果弹出框直接显示后台返回的json字符串。
- dataType值如果为’html’,结果弹出框直接显示后台返回的json字符串。
- 在java中,一般都是json串;而JSON对象,则常存在于js代码块中
通过dataType选项还可以指定其他不同数据处理方式。除了单纯的XML,还可以指定 html、json、jsonp、script或者text。
其中,text和xml类型返回的数据不会经过处理。数据仅仅简单的将XMLHttpRequest的responseText或responseHTML属性传递给success回调函数,
'注意',我们必须确保网页服务器报告的MIME类型与我们选择的dataType所匹配。比如说,XML的话,服务器端就必须声明 text/xml 或者 application/xml 来获得一致的结果。
如果指定为html类型,任何内嵌的JavaScript都会在HTML作为一个字符串返回之前执行。类似的,指定script类型的话,也会先执行服务器端生成JavaScript,然后再把脚本作为一个文本数据返回。
如果指定为json类型,则会把获取到的数据作为一个JavaScript对象来解析,并且把构建好的对象作为结果返回。为了实现这个目的,他首先尝试使用JSON.parse()。如果浏览器不支持,则使用一个函数来构建。JSON数据是一种能很方便通过JavaScript解析的结构化数据。如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。如果要指定回调函数的参数名来取代默认的callback,可以通过设置$.ajax()的jsonp参数。