1、Ajax(Asynchronous JavaScript And XML) 异步的JavaScript和XML
XML 可扩展标记语言
Ajax是常用的WEB开发技术,是联系前端和后端的桥梁
应用:搜索引擎(例如在百度里输入一个字符,下面就自动显示相关信息的列表
其实这些信息就是通过使用Ajax从服务器获取的)

2、HTTP原理介绍
HTTP:超文本传输协议
访问网页的原理:响应 和 请求
请求:从客户端到服务器端的请求消息
响应:服务器根据客户请求返回内容
请求方式:get 和 post
get方式请求:需要从服务器获取数据
post方式请求:把客户端的数据提交给服务器

总结:Ajax就是通过运行JavaScript程序发起HTTP请求,而不用非得把请求地址写到
浏览器地址栏,再按回车请求网页

3、Chrome浏览器开发者工具
可以通过Network选项查看发起的请求

3、搭建自己的WEB服务器
如何让自己的电脑变成服务器:安装WEB服务器程序
最常用的WEB服务器程序是Apache,但是在Windows环境下安装会比较困难,所以
可以安装一个集成环境:XAMPP(下载地址:http://www.xampps.com)

本机的IP地址:127.0.0.1 等同于域名 localhost

将网页放到XAMPP安装根目录下htdocs文件夹下

4、Ajax使用步骤
(1)创建XMLHttpRequest对象

  var xhr = new XMLHttpRequest();
(2)使用onreadystatechange事件监听请求过程的变换,并设置匿名函数处理响应内容

   readyState状态0-4

   0:请求初始化

  1:服务器建立连接

  2:收到的请求

  3:处理请求

  4:请求完成并准备响应就绪

(3)初始化请求

  xhr.open()

(4)发送请求

  xhr.send()

5、XMLHttpRequest对象
属性:

onreadeystate事件
readyState XMLHttpRequest对象的状态码,从0-4变化
0:请求初始化
1:服务器建立连接
2:收到的请求
3:处理请求
4:请求完成和响应准备就绪
status HTTP状态码,例如404/200/500
responseText 返回作为一个字符串的响应数据

方法:

open(method,url,asyn)
send()
setRequestHeader()仅在post请求时使用
xhr.setRequestHeader("Content-Type","aplication/x-www-form-urlencoded");

==============以下使用表单方式和Ajax方式请求区别==============
表单方式:地址栏会跳转
Ajax方式:地址不会跳转

6、表单GET请求与POST请求的区别
GET请求会将数据拼接显示在地址栏中,不安全。且地址栏地址的长度是有限制的,超出长度,地址失效
POST请求方式不会将数据显示在地址栏,相对get方式更安全

7、Ajax发起GET请求
document.querySelector('#getBtn').onclick = function(){
  var name = document.getElementById('name').value;
  var message = document.getElementById('message').value;
  var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function(){
      if(xhr.status === 200 && xhr.readyState === 4){
        alert(xhr.responseText);
      }
    }
  xhr.open('GET','http://localhost/get-content.php?name='+ name +'&message='+ message +'',true);
  xhr.send();
}
8、Ajax发起POST请求
document.querySelector('#postBtn').onclick = function(){
  var name = document.getElementById('name').value;
  var message = document.getElementById('message').value;
  var xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function(){
    if(xhr.status === 200 && xhr.readyState === 4){
      alert(xhr.responseText);
    }
  }
  xhr.open('POST','http://localhost/post-content.php',true);

  xhr.setRequestHeader('Content-Type','Application/x-www-form-urlencoded');

  xhr.send('name='+ name +'&message='+ message);
}

9、Ajax处理JSON数据

JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式

后端可能是php、java、.net,不管后端是什么,只要知道后端会返回一个JSON数据即可。
实际中可以根据后端提供的接口来获取JSON,再在前端进行相关操作。

JSON.parse() 可以把JSON字符串转换为JavaScript对象

10、Ajax异步和同步

同步:后面的代码必须等到Ajax请求完成后才执行
异步:后面的代码会先于Ajax请求执行

一个程序中,异步操作会等到同步操作执行完成后才执行

AJAX相关概念及应用的更多相关文章

  1. 从零开始学 Web 之 Ajax(一)服务器相关概念

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  2. AJAX学习前奏----JS基础加强

     AJAX学习前奏----JS基础加强 知识概要: 1.js类&属性&方法的定义 2.静态属性与方法 3.构造方法 4.原型的使用 5.Object对象直接加属性和方法 6.JSO ...

  3. 什么是 dynaTrace Ajax

    随着 jQuery.Dojo.YUI 等框架的兴起让构建 Web2.0 应用更加容易,但随之带来的定位等应用问题也越来越难,尤其是与性能相关的.dynaTrace Ajax Edition 是一个强大 ...

  4. ActiveMQ使用详解---相关概念

    一.前言 公司之前使用activeMQ做过一款用于系统之间传递信息的工具,最近才正式投入生产使用,这期间出现了一些比较奇怪的问题,最终发现是没有清晰的了解activeMQ的相关配置以及一些相关概念,借 ...

  5. Ajax和跨域请求

    Ajax 一.概述 Web 程序最初的目的就是将信息(数据)放到公共的服务器,让所有网络用户都可以通过浏览器访问. 在次之前,我们可以通过以下几种方式让浏览器发出对服务端的请求,获取服务端的数据: 地 ...

  6. 纯手写实现ajax分页功能

    前言 最近用到了这个功能,百度大半天,网上的不是有各种问题就是需要引入其他的插件,无奈,只能自己写,大致功能已经完成.前端页面用bootstrap做样式,分页功能用ajax实现,没用其他插件哦,只引入 ...

  7. jQuery之ajax实现篇

    jQuery的ajax方法非常好用,这么好的东西,你想拥有一个属于自己的ajax么?接下来,我们来自己做一个简单的ajax吧. 实现功能 由于jq中的ajax方法是用了内置的deferred模块,是P ...

  8. Ajax及跨域

    概念 Ajax Ajax,Asynchronous JavaScript and XML,字面意思:异步的 JavaScript 和 XML,是指一种创建交互式网页应用的网页开发技术. 用于异步地去获 ...

  9. 一个粗心的Bug,JSON格式不规范导致AJAX错误

    一.事件回放  今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...

随机推荐

  1. NX二次开发-UFUN设置工程图PNG图片高度UF_DRF_set_image_height

    #include <uf.h> #include <uf_drf.h> UF_initialize(); //插入PNG char* file_name = "D:\ ...

  2. java系列(1/4)基础阶段-MySQL(2/13)

    本单元目标 一.为什么要学习数据库 二.数据库的相关概念 DBMS.DB.SQL 三.数据库存储数据的特点 四.初始MySQL MySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停 ...

  3. vs使用出现的一些常见错误(持续更新)

    vs2010编译出错时怎么会执行上一次的结果_百度知道https://zhidao.baidu.com/question/193018332.html

  4. HDU1556-Color the ball-前缀和/线段树/树状数组

    N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色.但 ...

  5. 11-python基础—格式化的两种方式

    一.使用% %s 字符串 %c 字符 %d 十进制(整数) %i 整数 %u 无符号整数 %o 八进制整数 %x 十六进制整数 %X 十六进制整数大写 %e 浮点数格式1 %E 浮点数格式2 %f 浮 ...

  6. C#& Screen 类&(&多&屏&幕&开&发)

    原文:C#& Screen 类&(&多&屏&幕&开&发) Screen 类 下面的代码示例演示如何使用 Screen 类的各种方法和属性. 该示 ...

  7. PE头里的东西更多。。。越看越恶心了,我都不想看了

    winnt.h 中,定义的PE头结构体 typedef struct _IMAGE_NT_HEADERS{DWORD Signature;//PE文件头标志:PE\0\0.在开始DOS header的 ...

  8. HTML_案例(首页制作)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. The linux command 之软件包管理

    一.软件包系统 不同的Linux发行版用的是不同的软件包系统,多数都采用以下两种: 二.软件包系统工具 三.在库里查找软件包 四.安装库中的软件包 五.安装软件包文件中的软件包 六.删除软件包 七.更 ...

  10. leetcood学习笔记-53*-最大子列和

    题目描述: 方法一:O(N) class Solution(object): def maxSubArray(self, nums): sum = 0 max_sub_sum = nums[0] fo ...