1.什么事ajax

Asynchronous JavaScript and xml (异步JavaScript和XML)
主要作用是用来处理前后端数据传输

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

2.Ajax使用

2.1. 创建ajax对象

所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。

创建 XMLHttpRequest 对象的语法:

variable=new XMLHttpRequest();

老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:

variable=new ActiveXObject("Microsoft.XMLHTTP");

为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject .

var xhr;
if (window.XMLHttpRequest){//  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码xhr= new XMLHttpRequest();
}else{// IE6, IE5 浏览器执行代码xhr = new ActiveXObject("Microsoft.XMLHTTP");
}

2.2. 服务器的请求配置

配置对服务器请求的配置需要使用ajax对象上的open方法

open字面意思是打开,就是打开一个请求。open之后并没有真正的发送请求,

xhr.open(要发送的请求类型,路径,是否使用异步);

第一个参数,请求方式,get请求还是post请求

第二个参数,请求的服务器路径

第三个参数,表示是否是异步处理,true为异步

 xhr.open('get','http://localhost/index.php');

2.3. 发送请求

发送请求是用send()方法

里面的参数表示http requset报头里面携带内容。

get请求报头里面没有内容,post请求有内容。

get请求

xhr.send(null);

post请求,写的也是类似于get请求的参数字符串

xhr.send("name=kaola&age=18");

2.4 接受服务器的返回信息

在浏览器上发送的请求由浏览器来接受信息,

现在是通过ajax发送的请求,当然是还有ajax来接受信息

浏览器可以接收的信息ajax都可以接收,例如字符串,HTML标签,CSS样式,xml内容,json内容等等

2.4.1 接受信息的属性

属性:

1.responseText 以字符串形式接受后台返回的信息。

不能直接获取,ajax请求是异步的,同时后台返回的数据是以数据流的形式返回的,所以要通过

状态监测数据是不是返回完了

  1. readyState 表示ajax的状态

    ajax一共有5种状态

    0   ==> 创建ajax对象完毕
    1   ==> 调用了open()方法
    2   ==> 调用了send()方法
    3   ==> 服务器端只返回了一部分数据
    4   ==> 服务器端数据全部返回,ajax请求完成
    

    例子:

   // 点击box发送ajax请求box.onclick = function(){// 创建ajax对象,对象调用成员实现对服务器的请求// 1.创建ajax对象var xhr = new XMLHttpRequest();// 2.创建一个新的http请求,(打开浏览器,输入请求地址)// xhr.open(请求的方式(get/post),请求的地址[,异步同步请求])xhr.open('get','http://localhost/index.php');// 3.发送请求// xhr.send(传递post请求的数据/ get请求设置 null)xhr.send(null);// 4.获取返回数据,但是此时没法获得if(xhr.readyState == 4 ){alert(xhr.responseText)}}

但是这里send发送是一个异步的过程,直接判断状态,会如果状态不是4,会导致无法执行if里面的语句

需要通过事件实时监听状态的变化

  1. onreadystatechange 事件,该事件会感知ajax状态readyState的变化,只要状态一变化,事件就会执行

    感知对象状态变化

    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function(){console.log(xhr.readyState)
    }
    //每次状态变化都会打印状态,但是不会打印0,因为0没有对比,
    

    所以程序整个应该改为

   // 点击box发送ajax请求box.onclick = function(){// 创建ajax对象,对象调用成员实现对服务器的请求// 1.创建ajax对象var xhr = new XMLHttpRequest();// 2.创建一个新的http请求,(打开浏览器,输入请求地址)// xhr.open(请求的方式(get/post),请求的地址[,异步同步请求])xhr.open('get','http://localhost/index.php');// 3.发送请求// xhr.send(传递post请求的数据/ get请求设置 null)xhr.send(null);// 4.监听状态变化事件,获取后台返回数据xhr.onreadystatechange = function(){if(xhr.readyState == 4){alert(xhr.responseText)}}}
  1. HTTP 状态码

    每一次http请求,会根据请求是否成功,有不同的状态码。更加状态码处理结果

    // 点击box发送ajax请求
    box.onclick = function(){// 创建ajax对象,对象调用成员实现对服务器的请求// 1.创建ajax对象var xhr = new XMLHttpRequest();
    
   // 2.创建一个新的http请求,(打开浏览器,输入请求地址)// xhr.open(请求的方式(get/post),请求的地址[,异步同步请求])xhr.open('get','http://localhost/index.php');// 3.发送请求// xhr.send(传递post请求的数据/ get请求设置 null)xhr.send(null);// 4.监听状态变化事件,获取后台返回数据xhr.onreadystatechange = function(){if(xhr.readyState == 4){if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){alert(xhr.responseText)}}}

JSON基础

1.什么是 JSON ?

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)

JSON 是轻量级的文本数据交换格式

JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。

目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。

JSON与 XML 相同之处

  • JSON 是纯文本
  • JSON 具有"自我描述性"(人类可读)
  • JSON 具有层级结构(值中存在值)
  • JSON 可通过 JavaScript 进行解析
  • JSON 数据可使用 AJAX 进行传输

JSON与 XML 同之处

  • 没有结束标签
  • 更短
  • 读写的速度更快
  • 能够使用内建的 JavaScript eval() 方法进行解析
  • 使用数组
  • 不使用保留字

2.为什么使用 JSON?

对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:

使用 XML

读取 XML 文档

使用 XML DOM 来循环遍历文档

读取值并存储在变量中

使用 JSON

读取 JSON 字符串;

用 eval() 处理 JSON 字符串;

3.JSON数据的组成

  1. json对象

“{}”--json对象

“{}”包含---名称/值对【键值对】/ json数组 / json对象

JSON 名称/值对【键值对】书写格式是:

key : value-----”name”:zhangsan

JSON 名称/值对【键值对】中的键,使用双引号包围

JSON 名称/值对【键值对】中的值

1.数字(整数或浮点数) "age":30

2.字符串(在双引号中)”name”:”zhangsan”

3.逻辑值(true 或 false)"flag":true

4.数组(在中括号中)”array”:[]

5.对象(在大括号中)”obj”:{}

6.null     "runoob":null

无奈源于不够强大

十三、JavaScript ajax请求相关推荐

  1. ajax请求如何判断超时,ajax请求超时判断(转载)

    ajax请求时有个参数可以借鉴一下 var ajaxTimeOut = $.ajax({ url:'', //请求的URL timeout : 1000, //超时时间设置,单位毫秒 type : ' ...

  2. react发送Ajax中文问号,如何从Javascript/React发送AJAX请求并在pythonrestapi中接收数据...

    我在react中编写了前端代码.我有一个简单的for,用户可以填写他们的姓名.职务.部门和其他类似的基本字符串字段.当用户点击提交时,我让javascript创建一个用python+flask编写的对 ...

  3. ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践

    解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头.正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现. 此处手札 供后人参 ...

  4. ajax获取php的数组,使用AJAX请求获取数组并将其传递到php数组中 - javascript

    我正在为下一个问题苦苦挣扎:我有一个ajax请求,该请求将变量传递给PHP文件. PHP处理该变量并返回一个数组.我需要取回该数组,所以我使用了AJAX成功回调函数,但是我只能打印出数组,仅此而已.我 ...

  5. ajax返回数据输出成表,javascript代码实例教程-ajax请求返回Json格式数据如何循环输出成table形式...

    小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过. 首先,Ajax请求数据,(用的是Jquery的Ajax) [javascript] $(function(){ ...

  6. jquery ajax 延迟执行,javascript – 尝试为jQuery AJAX请求添加延迟

    我试图延迟一个 AJAX请求,以便在输入单元的最后一个键盘后2-3秒发送它. 到目前为止,我已设法延迟请求,但在2-3秒后,我收到一个请求发送给该字段中的每个密钥- 如何让jQuery取消第一个并发送 ...

  7. JavaScript实现同步Ajax请求的两种方式

    JavaScript的Ajax请求默认是异步的,有以下两种方式能让Ajax请求变成同步 方式一 使用ES7的Async和Await async function main(){const env = ...

  8. ajax请求时设置cookie,如何在JavaScript中使用AJAX请求设置Cookie值?

    我们需要使用AJAX请求或以任何AJAX请求将这些cookie发送到服务器的方式来设置cookie. 这里要注意的一件事是,对任何远程服务器的每个AJAX请求都会自动将所有cookie发送到该服务器, ...

  9. java中使用ajax请求数据格式,Java基本数据类型 javascript中post和ajax提交 Axure

    Java基本数据类型 Java一共有八种基本类型,六种数据类型,一种字符类型,一种布尔类型 分别是 byte 是数据类型内存大小1,内存位数是8位,最小值是-128(-27),最大值:127(27-1 ...

最新文章

  1. C语言循环选择还有,C语言第五讲,语句 顺序循环选择.(示例代码)
  2. PHP设计模式之组合模式(Composite Pattern)
  3. 刚刚,CVPR 2021论文接收结果「开奖了」
  4. 【Go】语法基础之结构体
  5. 机器学习(MACHINE LEARNING)MATLAB求解状态转移矩阵
  6. 移动Web开发实践——解决position:fixed自适应BUG
  7. 艾伟_转载:ASP.NET模板引擎技术
  8. tp5 ajax 路由,tp5中ajax方式提交表单
  9. Java Excel导出
  10. Pipenv – 超好用的 Python 包管理工具 1
  11. 记一次成功部署kolla-ansible ocata版本过程
  12. debug命令_Python 必备 debug 神器:pdb
  13. 2020 年百度之星·程序设计大赛 - 复赛 1002 Binary Addition
  14. BZOJ1767/Gym207383I CEOI2009 Harbingers 斜率优化、可持久化单调栈、二分
  15. 【离散数学】集合论 第四章 函数与集合(6) 三歧性定理、两集合基数判等定理(基数的比较)、Cantor定理
  16. MP4视频损坏修复工具下载
  17. python随机产生100个整数二进制_python产生随机整数
  18. 清华EMBA课程系列思考之六 -- 比较文明视野下的中华领导智慧、企业管理与经济解析
  19. 使用代理爬去微信公众号_使用代理处理反爬抓取微信文章
  20. 360木马查杀后mysql数据不能启动

热门文章

  1. 基于MATLAB的语音去噪处理系统
  2. JAVA8用哪个版本的MYSQL_MySQL用哪个版本,5.7还是8.0?
  3. 2288H v5服务器恢复IBMC默认密码方法与步骤
  4. webpack性能优化全方案
  5. 武汉大学计算机电气,武汉大学电气与自动化学院
  6. X站全称是什么_B站课程排行榜,当代大学生最爱学什么?
  7. Windows10开机音乐替换
  8. Excel的使用心得与技巧
  9. Dremel和Hadoop
  10. 跨域的这三种解决方案你知道吗?