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. requests 模块例题示范

    requests 模块 re模块和requests模块结合示范实例 .*? 不加圆括号表示在要匹配里面的内容不要: (.*?)表示在要匹配的两者之间的内容都要: import requests imp ...

  2. iOS的UILabel设置多行显示

    label.lineBreakMode = NSLineBreakByWordWrapping; label.numberOfLines = ;

  3. jquery 判断文字是否超出div出现三个点的省略号

    现在有个需求,就是一个div宽度固定,但是文字可能会超出,超出出现三个点省略,然后鼠标划入的时候显示全部,不超出鼠标划入就不显示,这就意味着要判断文字是否超出了 参考代码 <html lang= ...

  4. Dw 表单制作 与 dedecms 结合实现提交效果

    Dw 表单制作 与 dedecms 结合实现提交效果 自定义表单的用处 1.教育类网站的学员报名 2.企业网站的在线订单 3.普通网页上的一些和用户交互的小功能 实现原理:首先添加表单:核心-频道模型 ...

  5. linux-系统启动流程-7

    1,BIOS开机自检,检查cpu硬件及开机启动顺序,查找第一个磁盘磁头的MBR信息并加载BOOtloader,然后将控制权交与bootloader 2, GRUB GRUB(Grand Unified ...

  6. UVa 1602 Lattice Animals (STL && 生成n连块 && 无方向形状判重)

    题意 : 给定一个 w * h 的 矩阵,在矩阵中找不同n个连通块的个数(旋转,翻转,平移算作一种) 分析 : 这题的关键点有两个 ① 生成n连块并且存储起来(因为题目是多测试用例,如果每一次都重新生 ...

  7. 命令行创建 vue 项目(仅用于 Vue 2.x 版本)

    1 .安装 Node.js 和 npm ( 验证安装成功输入下图 1 命令行可得 2:输入命令行 3 可得 4 即安装成功) 2.安装全局 webpack (安装依照下图输入命令行 1 耐心等待至到出 ...

  8. [BZOJ1697][USACO2007 FEB]Cow Sorting牛排序:贪心+置换

    分析 一个月前做的一道题补一下题解,就简单写一写吧. 单独考虑每一个循环节,如果只进行内部的调整,最优方案显然是把最小的绕这个循环交换一圈. 但是借助全局最小值可能使答案更优,两种情况取个\(\max ...

  9. 大哥带的MSsql注入(SQL Server)--预习

    ①判断数据库类型and exists (select * from sysobjects)--返回正常为mssql(也名sql server)and exists (select count(*) f ...

  10. React Native商城项目实战02 - 主要框架部分(tabBar)

    1.安装插件,cd到项目根目录下执行: $ npm i react-native-tab-navigator --save 2.主框架文件Main.js /** * 主页面 */ import Rea ...