数据请求:Ajax基础

数据请求:Ajax基础Ajax 概述它是浏览器提供的一套方法 可以实现页面无刷新更新数据 提高用户浏览网站应用的体验 Ajax 的应用场景页面上拉加载更多数据列表数据无刷新分页表单项离开焦点数据验证搜索框提示文字下拉列表 Ajax 运行原理及实现 Ajax 运行原理 Ajax 相当于浏览器发送请求与接收响应的代理人 以实现在不影响用户浏览页面的情况下 局部更新页面数据 从而提高用户体验 Ajax 的

Ajax 概述

它是浏览器提供的一套方法,可以实现页面无刷新更新数据,提高用户浏览网站应用的体验。

Ajax 的应用场景

Ajax 运行原理及实现

Ajax 运行原理
Ajax 相当于浏览器发送请求与接收响应的代理人,以实现在不影响用户浏览页面的情况下,局部更新页面数据,从而提高用户体验。
在这里插入图片描述
Ajax 的实现步骤






  1. 创建 Ajax 对象
 var xhr = new XMLHttpRequest(); 
  1. 告诉 Ajax 请求地址以及请求方式
xhr.open('get', 'http://www.example.com'); 
  1. 发送请求
 xhr.send(); 
  1. 获取服务器端给与客户端的响应数据
xhr.onload = function () { 
    console.log(xhr.responseText); } 

服务器端响应的数据格式
在真实的项目中,服务器端大多数情况下会以 JSON 对象作为响应数据的格式。当客户端拿到响应数据时,要将 JSON 数据和 HTML 字符串进行拼接,然后将拼接的结果展示在页面中。
在 http 请求与响应的过程中,无论是请求参数还是响应内容,如果是对象类型,最终都会被转换为对象字符串进行传输。




JSON.parse() // 将 json 字符串转换为json对象 

请求参数传递

传统网站表单提交

<form method="get" action="http://www.example.com"> <input type="text" name="username"/> <input type="password" name="password"> </form> <!– http://www.example.com?username=zhangsan&password= --> 

GET 请求方式

xhr.open('get', 'http://www.example.com?name=zhangsan&age=20'); 

POST 请求方式

xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') xhr.send('name=zhangsan&age=20'); 

请求报文
在 HTTP 请求和响应的过程中传递的数据块就叫报文,包括要传送的数据和一些附加信息,这些数据和信息要遵守规定好的格式。
在这里插入图片描述
请求参数的格式






  1. application/x-www-form-urlencoded
 name=zhangsan&age=20&sex=
  1. application/json
{ 
   name: 'zhangsan', age: '20', sex: '男'} 

在请求头中指定 Content-Type 属性的值是 application/json,告诉服务器端当前请求参数的格式是 json。

JSON.stringify() // 将json对象转换为json字符串 

注意:get 请求是不能提交 json 对象数据格式的,传统网站的表单提交也是不支持 json 对象数据格式的。

获取服务器端的响应

Ajax 状态码
在创建ajax对象,配置ajax对象,发送请求,以及接收完服务器端响应数据,这个过程中的每一个步骤都会对应一个数值,这个数值就是ajax状态码。

xhr.readyState // 获取Ajax状态码 

onreadystatechange 事件

// 当Ajax状态码发生变化时 xhr.onreadystatechange = function () { 
    // 判断当Ajax状态码为4时 if (xhr.readyState == 4) { 
    // 获取服务器端的响应数据 console.log(xhr.responseText); } } 

两种获取服务器端响应方式的区别
在这里插入图片描述
Ajax 错误处理




  1. 网络畅通,服务器端能接收到请求,服务器端返回的结果不是预期结果。
    可以判断服务器端返回的状态码,分别进行处理。xhr.status 获取http状态码

  2. 网络畅通,服务器端没有接收到请求,返回404状态码。
    检查请求地址是否错误。

  3. 网络畅通,服务器端能接收到请求,服务器端返回500状态码。
    服务器端错误,找后端程序员进行沟通。

  4. 网络中断,请求无法发送到服务器端。
    会触发xhr对象下面的onerror事件,在onerror事件处理函数中对错误进行处理。

低版本 IE 浏览器的缓存问题
问题:在低版本的 IE 浏览器中,Ajax 请求有严重的缓存问题,即在请求地址不发生变化的情况下,只有第一次请求会真正发送到服务器端,后续的请求都会从浏览器的缓存中获取结果。即使服务器端的数据更新了,客户端依然拿到的是缓存中的旧数据。

解决方案:在请求地址的后面加请求参数,保证每一次请求中的请求参数的值不相同。

 xhr.open('get', 'http://www.example.com?t=' + Math.random()); 

Ajax 异步编程

Ajax 封装

ajax({ 
    type: 'get', url: 'http://www.example.com', success: function (data) { 
    console.log(data); } }) 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218089.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午8:04
下一篇 2026年3月18日 上午8:04


相关推荐

  • 使用Python防止SQL注入攻击

    使用Python防止SQL注入攻击让我们一起掌握 Python 防止 SQL 注入的技巧跟方法来抵抗恶意攻击吧

    2026年3月17日
    2
  • matlab中直方图的定义_matlab绘制直方图

    matlab中直方图的定义_matlab绘制直方图MATLAB中直方图均衡化和规定化处理函数格式如下:(1)J=imhist(I,n)(2)J=imhist(I,map)(3)[counts,X]=imhist(I,?)(4)J=histeq(I,n)(5)J=histeq(I,map,n)(6)[J,counts]=histeq(I,?)说明:对于…

    2022年10月19日
    4
  • MVC学习笔记八:WebGrid控件的高级使用「建议收藏」

    MVC学习笔记八:WebGrid控件的高级使用「建议收藏」WebGrid控件的高级使用在笔记三中记录了WebGrid的简单使用,但实际工作中并不能满足开发要求,比如:考虑到性能,要求服务器端分页,而不是查出所有数据来进行简单的客户端页面分页;要在排序时,给列标题显示不同图像等等,都不是直接就能满足的,这里记录下对WebGrid进行的较高层次的使用。一.服务器端分页处理在演示服务端分页之前,先做一些简单的准备工作:

    2022年10月6日
    5
  • 周鸿祎“评价一切”:DeepSeek、Manus、华为、英伟达、智能眼镜……

    周鸿祎“评价一切”:DeepSeek、Manus、华为、英伟达、智能眼镜……

    2026年3月15日
    2
  • 需求分析说明书和需求规格说明书

    需求分析说明书和需求规格说明书一 需求分析说明书和需求规格说明书的区别两者区别需求分析说明书 一般是对某个市场或者是客户群来讲的 类似于调研报告 重点是体现出产品要满足哪些功能 哪些是重点 热点 需求规格说明书 是从业务规则讲起的 细一点偏向于软件的概要设计 是从开发 测试的角度去讲产品功能 里面要包含原型界面 业务接口 活动图等二 需求分析说明书模板 1 简介 1 1 目的 1 2 范围 软件功能 与其他系统的关系 系统的地域使用范围 1 3 定义 首字母缩写词和缩略语 1 4 概述 软件其他部门所包含的内容 如参考资料 并解

    2026年3月18日
    1
  • python滑动验证码_python编程是啥

    python滑动验证码_python编程是啥程序功能:程序模仿登入京东主页,自动输入帐号和密码,完成滑块验证,最后领取每日签京豆关键难点:80%的难点在于滑块验证importtimeimportcv2importrandomimportopenpyxlfromurllibimportrequestfromseleniumimportwebdriverimportnumpyasnpfromselenium.webdriver.common.action_chainsimportActionChai

    2025年12月15日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号