Ajax_01

一、简介
Ajax(Asynchronous JavaScript and XML)(异步JavaScript和XML)。用于向服务器发送异步请求
作用
在不重新加载页面的情况下,可以与服务器交换数据更新部分网友的数据。
传统请求
请求的响应会刷新当前整个页面,会用一个新的页面替换当前页面内容
2、传统请求与Ajax请求的区别
传统请求,在提交一个请求后,服务器返回数据,会更新整个页面。
Ajax 是一种在无需重新加载整个网页的情况下,可以与服务器交换数据并更新部分网页内容 。 

    总结:传统请求方式得到是一个页面,而Ajax获取的服务器的数据,而不是整个页面。ajax不会刷新整个页面,只是更新页面的部分内容,效率要比传统请求效率更高。

在2005年,Google通过Google Suggest使Ajax变得流行起来

二、ajax的使用

Ajax是客户端技术,运行在浏览器,向服务器发送异步请求,并更新部分页面内容。

同步:指发送一个请求,需要等待服务器返回结果,然后才能继续后面的任务,有个等待过程。  

异步:指发送一个请求,不需要等待返回,随时可以做别的操作,不需要等待。

1、创建核心对象
老版浏览器
var xhr =new ActiveXObject("Microsoft.XMLHTTP"); 
新版浏览器
var xhr =new XMLHttpRequest(); 
兼容所有的浏览器
var xhr;
if (window.ActiveXObject ){    
	xhr = new ActiveXObject("Microsoft.XMLHTTP")
}else if(window.XMLHttpRequest){    
	xhr = new XMLHttpRequest()}
2、发送get请求
发送请求到服务器,需要使用open()和send()方法:
xhr.open('get','xxx/?name=xxx&password=123456',true)   # 在url中拼接参数
xhr.send()      # 向服务器发送请求  - view function
方法描述
open(method,url,async)规定请求的类型、URL 以及是否异步处理请求。
method:请求的类型;GET 或 POST
url:请求的服务器地址
async:true(异步)或 false(同步)
send(string)将请求发送到服务器,string仅用于post请求中。
服务器接收请求
def checkusername(request):
    name = request.POST.get("userName")
    print("name=",name)
    user = User.objects.filter(name=name)
    if user:
        return HttpResponse("用户名已存在")   # 只需要返回部分内容,不需要返回整个html文件
    return HttpResponse("用户名合法")
客户端接收响应
发送异步请求后,当readyState改变时,会触发onreadystatechange事件。(回调函数)
属性描述
onreadystatechange存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
status200: “OK” 404: 未找到页面
xhr.onreadystatechange=function()
{
    if (xhr.readyState==4 && xhr.status==200)
    {
        var text = xhr.responseText;   //获得字符串形式的响应数据
        console.log(text)
    }
}
3、Ajax工作原理

在这里插入图片描述

4、POST请求
应用
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
xhr.open("POST",url,true);      
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");   发送表单数据xhr.send("name=Henry&password=123456");   # 在send方法中传参 
CSRF跨站请求伪造:

方式一

 xhr.setRequestHeader("content-type","application/x-www-form-urlencoded")
 xhr.send("username="+name.value+"&csrfmiddlewaretoken="+"{{ csrf_token }}")

方式二

xhr.setRequestHeader("X-CSRFToken","{{ csrf_token }}")
xhr.send("username="+name.value)

三、请求总结

  • 传统请求与Ajax请求区别:浏览器对响应结果处理方式不同。
    • 传统请求:使用一个新的页面来显现响应结果。
    • ajax请求:获取响应结果,更新部分页面内容,不会重新加载整个页面。
  • 同步与异步的区别:请求的机制不同,异步请求不会阻塞当前页面,而同步请求会阻塞当前页面。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值