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

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

1.1     场景原理

1-1.1      异步传输

当ajax发送请求后,在等待server端返回的这个过程中,前台会继续执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success

1-1.2      同步传输

当ajax发送请求后,在等待server端返回的这个过程中,前台页面里所有的代码停止,页面呈现假死状态,当这个AJAX执行完毕后才会继续运行其他代码,页面假死状态解除。

1-1.3     使用方法

a)     创建 XMLHttpRequest 对象

var ajax =newXMLHttpRequest()

b)     发送请求

方法

描述

open(method,url,async)

规定请求的类型、URL 以及是否异步处理请求。

ü  method:请求的类型;GET 或 POST

ü  url:文件在服务器上的位置

ü  async:true(异步)或 false(同步)

send(string)

将请求发送到服务器。

ü  string:仅用于 POST 请求

ü  GET数据

open(“GET”,url,true);

send();

ü  POST数据

open(“POST”,url,true);

send(data);

ü  设置头部

setRequestHeader(header,value)

1-2    可发送的数据格式

ajax的数据格式有四种:文本,json,HTML,和xml。现在普遍采用JSON数据格式发送数据。

1-2.1     JSON

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

1-2.2     格式语法

JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。

var obj ={a:'Hello', b:'World'};

//这是一个对象,注意键名也是可以使用引号包裹的

var json ='{"a": "Hello", "b": "World"}';

//这是一个 JSON 字符串,本质是一个字符串

1-2.3     JSON/JS对象互转

要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法:

var json =JSON.stringify({a:'Hello', b:'World'});

//结果是 '{"a": "Hello", "b": "World"}'

要实现从 JSON字符串转换为对象,使用 JSON.parse() 方法:

var obj =JSON.parse('{"a": "Hello", "b": "World"}');

//结果是 {a: 'Hello', b: 'World'}

1-3    响应/回调函数

每当 readyState 改变时,就会触发 onreadystatechange 事件。

readyState 属性存有 XMLHttpRequest 的状态信息。

下面是 XMLHttpRequest 对象的三个重要的属性:

属性

描述

onreadystatechange

存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。

readyState

存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

·      0: 请求未初始化

·      1: 服务器连接已建立

·      2: 请求已接收

·      3: 请求处理中

·      4: 请求已完成,且响应已就绪

status

200: "OK"
404: 未找到页面

responseText

响应返回文本

responseXML

1-4   
status状态

服务器常用的状态码及其对应的含义如下:

ü  200:服务器响应正常。

ü304:该资源在上次请求之后没有任何修改(这通常用于浏览器的缓存机制,使用GET请求时尤其需要注意)。

ü  400:无法找到请求的资源。

ü  401:访问资源的权限不够。

ü  403:没有权限访问资源。

ü  404:需要访问的资源不存在。

ü  405:需要访问的资源被禁止。

ü  407:访问的资源需要代理身份验证。

ü  414:请求的URL太长。

ü  500:服务器内部错误。

AJAX数据传输的更多相关文章

  1. $.ajax数据传输成功却执行失败的回调函数

    这个问题迷惑了我好几天,都快要放弃了,功夫不负有心人,最终成功解决,下面写一下我的解决方法. 我传的数据是json类型的,执行失败的回调函数是因为从后台传过来的数据不是严格的json类型,所以才会不执 ...

  2. AJAX数据传输(原生js)

    原生ajax写法 <!DOCTYPE html> <html lang=""> <head> <meta charset="UT ...

  3. jquery ajax 数据传输

    在 form表单中,需要发送给后台的是一串长数据,后台才能接受,而用户则只需要输入字符串中的一部分,这种情况下,就需要将用户输入内容,和剩余部分进行拼串,然后添加进 formData 中传输. 另一种 ...

  4. ajax同步、异步执行简单理解与证明

    此理解范例代码来自前几篇随笔! 首先我们来先了解下AJAX: Ajax:全称“Asynchronous Javascript and XML”(异步Javascript和XML),他是由Javascr ...

  5. Json,Ajax(0516)

    一.JSON简介: JSON(JavaScript Object Notation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读,同时也方便了机器进行解析和生成.JSON简单说就是java ...

  6. 第一百六十节,封装库--JavaScript,ajax注册表单到数据库

    封装库--JavaScript,ajax注册表单到数据库 效果图 前台js var biaodan = $().xu_lie_biao_dan($('form').sh_jd()); //序列化获取表 ...

  7. 第一百五十九节,封装库--JavaScript,表单序列化结合ajax提交数据

    封装库--JavaScript,表单序列化结合ajax提交数据 封装库,表单序列化方法 /** xu_lie_biao_dan()方法,表单序列化方法,将自动获取指定表单里面的各项字段name值和va ...

  8. Ashx的处理实例(逻辑处理/js调用)

    做asp.net开发的对.aspx,.ascx和.ashx都不会陌生.关于它们,网上有很多文章介绍.“纸上得来终觉浅,绝知此事要躬行”,下面自己总结一下做个笔记.1..aspxWeb窗体设计页面.We ...

  9. ASP.NET运行机制之一般处理程序(ashx)

    一. 概述 新建一个ashx文件  代码如下 <%@ WebHandler Language="C#" Class="TestHandler" %> ...

随机推荐

  1. POJ 1562:Oil Deposits

    Oil Deposits Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14462   Accepted: 7875 Des ...

  2. c 循环左移

    char b[11] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'}; const int iShift = 4; for (int j = ...

  3. 【Linux】linux用户系统管理

    Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须拥有一个账号,然后以这个账号的身份进入系统. 用户:使用linux系统的人. 用户组:具有相同权限的一组用户. li ...

  4. Tensorflow学习教程------代价函数

    Tensorflow学习教程------代价函数   二次代价函数(quadratic cost): 其中,C表示代价函数,x表示样本,y表示实际值,a表示输出值,n表示样本的总数.为简单起见,使用一 ...

  5. python中的with用法

    with是从Python2.5引入的一个新的语法,它是一种上下文管理协议,目的在于从流程图中把 try,except 和finally 关键字和 资源分配释放相关代码统统去掉,简化try….excep ...

  6. 7. react 基础 - React Developer Tools 的安装 及 使用

    1. 安装 react 开发调试工具 React Developer Tools 打开 chrome 浏览器访问 chrome://extensions/ 点击右上角的 拓展程序 -> 打开 c ...

  7. Java执行js加密算法

    Java执行js加密算法 今日需求:在后端执行一段加密算法,算法是js写的 明白需求以后疯狂百度.最后发现JDK提供了各种脚本的支持(怪笔者学艺不精,第一次见识到这个库,留下不学无术的泪水),正题开始 ...

  8. mysql比较运算,逻辑运算,范围查询,模糊查询

    比较运算 > < =  !=  <>   <=  >=  逻辑运算  and  or  not 范围查询  in   模糊查询  like             ...

  9. 连词词组|relax|brings about a rise in|Chance are (high)that|Have no clue|Be passionate about|Tedious|overwhelmed by piles of

    efficient有效率的 effective有效果的 Make sb. Do Stuff没有复数 首先的三种表述:First off=To begin with=For starters 其次:Ad ...

  10. tensorflow从训练自定义CNN网络模型到Android端部署tflite

    网上有很多关于tensorflow lite在安卓端部署的教程,但是大多只讲如何把训练好的模型部署到安卓端,不讲如何训练,而实际上在部署的时候,需要知道训练模型时预处理的细节,这就导致了自己训练的模型 ...