ajax可以说是很基本也很nice的功能,自己在使用中发现,ajax在js,jquery与angular中非常相似,又有区别,这里统一整理下
- ajax介绍
- js使用
- jquery使用
- angular($http)使用
ajax介绍
AJAX = Asynchronous JavaScript 和 XML(当然,可以传递特殊的字符串:json)。
AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
js使用
异步的核心对象:XMLHttpRequest
(XHR)。
1 | 通过获取核心对象,调用其api,回调做成功数据处理。 |
获取XMLHttpRequest对象。
1 | var xmlhttp; |
调用api,设置请求参数,回调函数
1 | //状态回调函数,当ajax执行流程为4,并且http请求状态码为200,异步成功 |
补充一下,返回值也可为responseXML,可在js中进行解析,还是responseText多一些。
jquery
load
从服务器加载数据,并把返回的数据放入被选元素中,需要由元素调用,不太灵活,用的较少,了解一下就行。
1 | $(selector).load(URL,data,callback); |
- 必需的 URL 参数规定您希望加载的 URL。
- 可选的 data 参数规定与请求一同发送的查询字符串键/值对集合。
- 可选的 callback 参数是 load() 方法完成后所执行的函数名称。
1 | $("button").click(function(){ |
get/post
两个常用的get/post请求方式,js提供的便捷方式。
get1
$.get(URL,callback);
callback 参数是请求成功后所执行的函数名。
1 | $("button").click(function(){ |
post
1 | $.post(_URL,data,callback_); |
- 必需的 URL 参数规定您希望请求的 URL。
- 可选的 data 参数规定连同请求发送的数据。
- 可选的 callback 参数是请求成功后所执行的函数名。
1 | $("button").click(function(){ |
ajax
jquery提供了通用的方式 $.ajax
,开发者可以通过多项配置来实现自己的需求。
1 | $.ajax({ |
还有很多未展示的配置,详情可以参考文档。
菜鸟教程
格式化
再补充几个传参时可能遇到的序列化方法。
- param()
1 | //将js对象转化为 ‘&’ 与 ‘=’ 连接的url格式的字符串 |
- serialize()
1 | //将表单数据name和value值变成 ‘&’ 与 ‘=’ 连接的url格式的字符串,可直接拼接url传参 |
- serializeArray()
1 | //返回的是json对象,可调用JSON.stringify(),将对象转化为字符串 |
angular
异步核心对象 $http,对原生XMLHttpRequest对象的简单封装,需要在创建时controller引入。
$http
1 | $http({ |
response的五个参数
- data(字符串或对象):响应体,就是后台返回的数据
- status:相应http的状态码,如200
- headers(函数):头信息的getter函数,可以接受一个参数,用来获取对应名字的值
- config(对象):生成原始请求的完整设置对象
- statusText:相应的http状态文本,如”ok”
惯例,提供了几个快捷请求,整理了那两个常用的 0.0
.get
1 | $http.get('/someUrl', config).then(successCallback, errorCallback); |
.post
1 | $http.post('/someUrl', data, config).then(successCallback, errorCallback); |
回调 .success / .error
回调如果不用then,可以用.success或者.error。
1 | $http({ |
注:v1.5 中$http
的 success
和 error
方法已废弃。使用 then
方法替代。
1 | 好啦,这些基本上够用的了。 |