Ajax学习笔记
Posted 海筒学苑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ajax学习笔记相关的知识,希望对你有一定的参考价值。
一、概念
Ajax:Asynchronous javascript And Xml异步的JS和xml(Extensible Markup Language 数据交换与传输格式,现已被json所取代),通过JS异常向服务器发送请求并接收响应数据。
同步访问:当客户端向服务器发送请求时,服务器在处理的过程中,浏览器只能等待,效率较低。
异常访问:当客户端向服务器发送请求时,服务器在处理的过程中,客户端可以做其他的操作,不需要一直等待。
AJAX优点:
异步访问
局部刷新
使用场景
搜索建议
表单验证
前后端分离
二、Ajax核心对象-异常对象(XMLHttpRquest)
XMLHttpRequest概念[简称:xhr]: 异常对象,代替浏览器向服务器发送异常的请求并接收响应[xhr是由JS提供]
创建异常对象:
<script>
if(window.XMLHttpRequest){
//支持 XMLHttpRequest
var xhr = new XMLHttpRequest();
}else{
//不支持XMLHttpRequest,使用 ActiveXObject 创建异步对象
var xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
</script>IE7+,Chrome,Firefox,Safari,Opera 调用XMLHttpRequest生成xhr对象
IE低版本(IE6及以下)调用ActiveXObject()生成xhr
xhr成员
三、Ajax操作步骤
注意:django中post需要传递csrf_token,否则触发响应403,拒绝访问;
获取csrf_token方法如下:
作用:当xhr的readyState发生改变的时候都要触发的操作;也称架设函数;当readyState的值为4且status值为200时,才可以获取响应数据
作用:服务器端的响应状态码
状态码 说明 200 表示服务器正确处理所有的请求以及给出响应 404 请求资源不存在 500 服务器内部错误 作用:响应数据
作用:请求状态,通过不同的请求状态来表示xhr与服务器的交互情况
由0-4共5个值来表示5个不同的状态
状态 说明 0 代理被创建,但尚未调用open()方法 1 open()方法已经被调用 2 Send()方法已经被调用,响应头也已经被接收 3 下载中;responseText属性已经包含部分数据 4 下载操作已完成 GET请求
//1.创建xhr请求
var xhr = createXhr();
//2.创建请求 - open()
xhr.open('GET',url,asyn[true|false])
//3.设置回调函数 - onreadystatechange
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
//接收响应
xhr.responseText;
}
}
//4.发送请求
xhr.send(null);
//注意:若含有请求参数 - URL后拼接 查询字符串 QueryString
//ex: xhr.open('get','/url?key=value&key=value',asyn)Post请求
//1.创建xhr请求
var xhr = createXhr();
//2.创建请求 - open()
xhr.open('post',url,asyn[true|false])
//3.设置回调函数 - onreadystatechange
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
//接收响应
xhr.responseText;
}
}
//4设置Content-Type;
//默认ajax post的Content-Type为 "text/plain;charset=utf-8"
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
//5.发送请求
xhr.send('请求数据');
//请求数据同查询字符串 "uname=guoxiaonao&age=18"var csrf=$("[name='csrfmiddlewaretoken']").val();
#获取后,将token放在post body数据中一并提交Open()方法
作用:创建请求
语法:open(method,url,asyn)
参数:
method:请求方式,取值'GET' 或 'POST'
url:请求地址,字符串
asyn:是否采用异步的方式 - true:异步 / false:同步
ex: xhr.open('GET','/server',true);send()方法
作用:通知xhr向服务器端发送请求
语法:send(body)
参数:
GET请求:body的值为null -> send(null)
POST请求:body的值为请求数据 -> send("请求数据")readyState属性
属性 - responseText
属性 - status
事件
四、Jquery对Ajax的支持
$ajax()
```shell
参数对象中的属性:
1.url : 字符串,表示异步请求的地址
2.type : 字符串,请求方式,GET 或 POST
3.data : 传递到服务器端的参数
可以是字符串 :"name=sf.zh&age=18"
也可以是js对象:
{
name:"sf.zh",
age:18
}
4.dataType : 字符串,响应回来的数据的格式
1.'html'
2.'xml'
3.'text'
4.'script'
5.'json'
6.'jsonp' : 有关跨域的响应格式
5.success:回调函数,请求和响应成功时回来执行的操作
6.error : 回调函数,请求或响应失败时回来执行的操作
7.beforeSend : 回调函数,发送ajax请求之前执行的操作,如果return false,则终止请求
8.contentType : 当有请求体有数据提交时,标明提交方式,默认值为'application/x-www-form-urlencoded; charset=UTF-8'
```示例代码
<script ></script>
<script>
$(function(){
$('#btn').click(function(){
$.ajax({
url:'/test_jq_get_server',
type:'get',
success:function(res){
$('#show').html(res);
}
})
})
})
</script>
以上是关于Ajax学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
GAMS学习笔记:案例分析10——Ajax纸业公司生产计划(附代码)
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段