AJAX 是什么

1. AJAX 是一种“艺术”

  • 简单地说

    • AJAX 是在不重新加载整个页面的情况下与服务器交换数据并更新部分网页的艺术
  • 网上是这样说的

    • AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML)
    • AJAX 是一种在 2005 年由 Google 推广开来的编程模式
    • AJAX 不是一种新的编程语言,而是一种使用现有标准的新方法
    • 通过 AJAX,你可以创建更好、更快以及更友好的 WEB 应用程序
    • AJAX 基于 JavaScript 和 HTTP 请求(HTTP requests)
    • 通过 HTTP 请求加载远程数据
  • jQuery 底层对 AJAX 实现进行了封装,这使得我们在进行 AJAX 操作时,不必像原生 JS 中那么复杂

  • $.get, $.post, $.ajax()

    • 返回其创建的 XMLHttpRequest 对象
    • 多数情况下我们不需要去操作返回的对象

2. 如何使用 AJAX 技术

  • 首先,得有 Web 服务器,如,能够通过浏览器去执行 HTML 和 Python

  • 注意:

    • 之前写的 HTML,直接在浏览器打开时,使用的是 file 协议
    • 而 AJAX 是基于 HTTP 请求的,所以需要 HTML 能够使用 HTTP 的协议打开
    • 如果能用 HTTP 协议打开 HTML,并且能够正常显示,那就表示 Web 服务器搭建成功

2.1 $.get() 方法

/* 发送 ajax 请求
1. url
2. 可选:发送 get 请求时携带的参数
3. 可选:回调函数,请求完之后做什么事
4. 可选:返回的数据类型 json
*/ $.get(url, {请求的参数}, function(data){}, "json");

2.2 $.post()

$.post(url, {请求的参数}, function(data){}, "json");

2.3 $.ajax()

$.ajax({
url:"/cgi-bin/x.py", // 当前请求的 url 地址
type:"get", // 当前请求的方式 get 或 post
data:{id:100,username:"zhangsan"}, // 请求时发送的参数
dataType:"json", // 返回的数据类型
success:function(data){ // ajax 请求成功后执行的代码
console.log(data);
},
error:function(){ // ajax 执行失败后执行的代码
alert("ajax 执行错误");
},
timeout:2000, // 设置当前请求的超时时间毫秒,必须是异步请求才会生效
async:true // 是否异步,true 为异步,false 为同步
});

2.4 AJAX 的异步与同步

/* 设置 ajax 的全局配置
async:false 设置当前请求为同步
*/
$.ajaxSetup({
async:false
});
  • AJAX 默认是异步请求

  • async (默认: true)

    • 默认设置下,所有请求均为异步请求,所以一般不必写这句
    • 如果需要发送同步请求,需将此选项设置为 false
  • 同步请求,发 AJAX 请求发出去后必须等待它的结果,返回后才能继续往下执行

  • 一般情况下,都使用异步操作就行

  • 除非有特殊情况,如,必须等 AJAX 的结果返回后才能做处理的,才用同步

3. 注意

  1. AJAX 是无刷新请求服务器,所以我们在浏览器中感觉不到,也看不到 AJAX 的具体请求和执行情况,因此,我们需要借助浏览器的调试工具 F12 进行查看

  2. AJAX 的请求是基于 HTTP 协议的,这就需要在打开带有 AJAX 的 HTML 时使用 HTTP 协议

  3. 关于返回的数据类型

    • get(), post(), ajax() 都可以设置返回的数据类型 "json"
    • 如果要求返回 json 格式数据,那么就必须返回 json
    • 如果返回的格式与设置的不匹配
      • get 和 post 方法将拿不到 data 中返回的数据
      • AJAX 方法则会走 error 函数
  4. 在 Python 中返回 json 格式数据

    • 引入 json 模块
    • json.dumps(数据),使用 json_dumps 方法进行 json 格式的编码转换
  5. AJAX 方法,会创建一个对象 XMLHttpRequest;在 AJAX 的方法中使用的 $(this) 代表 AJAX 的对象

4. 了解 JSON 格式数据

  • JSON 是 JavaScript Object Notation 的首字母缩写
  • 单词的意思是 JS 对象表示法
  • 这里说的 JSON 指的是类似于 JS 对象的一种数据格式
  • 目前这种数据格式比较流行,逐渐替换掉了传统的 XML 数据格式

4.1 JS 对象字面量

var tom = {
name:'tom',
age:18
};

4.2 JSON 格式的数据

{
"name":'tom',
"age":18
}
  • 与 JSON 对象(JS对象)不同的是,JSON 数据格式的属性名称需要用双引号引起来,用单引号或者不用引号均会导致数据读取错误

  • JSON 的另外一个数据格式是数组,和 JS 中的数组字面量相同

['tom', 18, 'programmer']

[Web 前端] 030 ajax 是什么的更多相关文章

  1. web前端开发——AJAX入门

    什么是AJAX AJAX: A New Approach to Web Applications XML AJAX是老技术新思想. 它所包括的内容我们之前都接触过.例如以下: (1)使用XHTML和C ...

  2. web前端开发-Ajax(1)

    1.简单简绍Ajax的功能 Ajax是处于前端和后端之间的这么一个东西,他可以拿到你前端form的内容,并且在你触发Ajax的时候,先将某些数据发送到服务器端,等接受到服务器 返回的数据时,执行某个函 ...

  3. web前端开发-Ajax(2)

    前面的一篇博文简单的简绍了Ajax基于jQuery的用法,接下来要对Ajax做进一步的介绍,Ajax请求大致可以通过三种方式发送:原生Ajax,jQuery,伪Ajax.1.原生Ajax: 由于Aja ...

  4. 第七篇:web之前端之ajax

    前端之ajax   前端之ajax 本节内容 ajax介绍 原生js实现ajax jquery实现ajax json 跨域请求 1. ajax介绍 AJAX(Asynchronous Javascri ...

  5. Web前端-Ajax基础技术(下)

    Web前端-Ajax基础技术(下) 你要明白ajax是什么,怎么使用? ajax,web程序是将信息放入公共的服务器,让所有网络用户可以通过浏览器进行访问. 浏览器发送请求,获取服务器的数据: 地址栏 ...

  6. Web前端-Ajax基础技术(上)

    Web前端-Ajax基础技术(上) ajax是浏览器提供一套的api,用于向服务器发出请求,接受服务端返回的响应,通过javascript调用,实现通过代码控制请求与响应,实现网络编程. ajax发送 ...

  7. Python web前端 11 form 和 ajax

    Python web前端 11 form 和 ajax 一.打开服务器 将handlers.py.httpd.py和libs.py三个文件放入新文件夹中,双击打开httpd.py文件即可 二.ajax ...

  8. js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符

    js中对arry数组的各种操作小结   最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...

  9. Web前端需要熟悉大学里【高大上】的计算机专业课吗?

    作为一名刚刚大学毕业,进入新的学习阶段的研究生,我必须说大学的专业课非常重要!不管你信不信,事实就是如此! 一.大学学习的专业课非常重要,它决定了我们能走到什么高度 前端的发展非常快,我常常觉得刚刚关 ...

随机推荐

  1. @ResponseStatus注解作用

    @ResponseStatus注解有两种用法,一种是加载自定义异常类上,一种是加在目标方法中 这里我们说一下加在目标方法上的这种情况,注解中有两个参数,value属性设置异常的状态码,reaseon是 ...

  2. Python之网络编程之并发编程的IO模型,

    了解新知识之前需要知道的一些知识 同步(synchronous):一个进程在执行某个任务时,另外一个进程必须等待其执行完毕,才能继续执行 #所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调 ...

  3. Python之网路编程之粘包现象

    一.什么是粘包 须知:只有TCP有粘包现象,UDP永远不会粘包 粘包不一定会发生 如果发生了:1.可能是在客户端已经粘了 2.客户端没有粘,可能是在服务端粘了 首先需要掌握一个socket收发消息的原 ...

  4. 多层for循环嵌套,如何能优化一点点,从运行时间维度

    将循环次数多的放在最内层,循环次数最少的放在最外层 换句话说,按照循环次数从小到大依次嵌套

  5. POJ-2762-Going from u to v or from v to u(强连通, 拓扑排序)

    链接: https://vjudge.net/problem/POJ-2762 题意: In order to make their sons brave, Jiajia and Wind take ...

  6. JVM基础——面试、笔试

    1.java内存与内存溢出 1.1 JVM分为哪些区,每一个区干嘛的?(见java虚拟机38页) (1)程序计数器(线程私有) 当前线程执行字节码的信号指示器.(每个线程都会在程序计数器中存储其指令, ...

  7. IntelliJ IDEA 2019.3激活破解教程(亲测有效,可激活至 2089 年)

    IntelliJ IDEA 2019.3激活破解教程(亲测有效,可激活至 2089 年) 所有软件安装位置,作者均在无中文.无空格目录下进行操作的 IntelliJ IDEA 2019.3激活破解教程 ...

  8. vue中为computed计算属性传参遇到的问题,已解决

    首先介绍下项目背景, 需要将 dataList 中的 item.stars 属性传入 computed 返回要展示的值 部分代码如下(请不要纠结为什么这么做,数据格式确认如此): <li cla ...

  9. docker小知识

    1,docker 使用普通用户 添加用户组: sudo groupadd docker 加入docker 组 sudo gpasswd -a ${USER} docker 或 usermod -aG ...

  10. 2018百度之星初赛A轮 度度熊学队列

    注意:刚开始用数组存deque<int> qa[MAX]会爆内存 需要改用map<int, deque<int> > qa优化 不明觉厉 #include<b ...