AJAX

AJAX:即异步的JavaScript 和 XML,是一种用于创建快速动态网页的技术;

    传统的网页(不使用AJAX)如果需要更新内容,必需重载整个网页面;

    使用AJAX则不与要加载更新整个网页,实现部分内容更新;

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

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

为什么要使用AJAX:

    AJAX主要是实现页面和web服务器之间数据的异步传输;

    简单来说,不采用ajax的页面,当用户在页面发送请求是,就要进行整个页面的刷新,刷新块面取决于服务器的处理快慢。在这个过程中用户必须得等待,不能济宁其他操作,也就是同步的方式。客户端和服务端传递了很多不需要的数据。效率低,用户体验差。

    采用ajax的页面,可以实现页面的局部更新,而不是整个页面的更新;并且发送请求后,用户还可以惊醒页面上的其他操作,这就是异步的方式;客户端和服务端间值传递需要的数据,效率高,用户体验性好;并且AJAX引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大量用户下的服务器负载;

AJAX的工作原理:

    XHR(浏览器内置对象:XMLHttpRequest)也就是AJAX功能实现所依赖的对象,AJAX就是通过浏览器的内置对象XMLHttpRequset来发送异步请求的,异步请求不会妨碍客户端的任何操作;

这里简单说下什么是异步:

    XHR就相当于一个通信兵,来负责客户端与服务器之间的通信传输;

要打仗了,前方阵地(客服端)不可能只等着通信兵(XHR)传递消息其他什么也不干吧,所以前方阵地还在干着自己的事情然后派通信兵去请求后方指挥部(服务器)的命令,指挥部下达命令指挥,通信兵再把命令传到前方阵地,然后前方阵地再执行命令相关的操作(客户端把数据渲染到页面),这也就是Ajax的异步原理。

同步:所谓的同步就是前方阵地和通信兵一起去向服务器请求数据,直到通信兵请求到数据,我才开始渲染页面,在请求的过程中页面一直是白屏等待的。

var xml = new XMLHttpRequest()         // 这是生成一个ajax对象

xml.open(method,url,boolean)

//  open(): XMLHtttpRequset.open()方法用于指定HTTP请求的参数,或者说初始化XMLHttpRequest实例对象,

参数1:有get和post两个取值

参数2:是你获取的路径

参数3:当是“true”的时候,服务器的请求是异步进行的,也就是脚本执行send()方法后不等待,服务器的执行结果,而是继续执行脚本代码;

    当时false是,服务器请示是同步及逆行的,也就是脚本执行send()方法后等待服务器的执行截锅的返回,若在过程中超时,则不再等待,继续执行后面的脚本代码;

xml.send()

    **这里我不是太清楚***   当open中使用GET方法提交这里的send()参数使用null;

      也可以使用send()方法传递参数,shyongsend方法传递参数使用的是POST方法,需要谁的那个Content-Type头信息,模拟HTTP POST方法发送一个表单,这样服务器才会知道如何处理上传的内容;参数的提交格式和GET方法中url的写法一样。设置头信息前必须调用open方法;xmlHttpRequest.open("POST","login.jsp",true); xmlHttpRequest.setRequestHeder("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");

    需要主要的是根据提交方式的不同,两种提交方式分别调用后台的doGet方法和doPost()方法

xmlHttpRequest常用属性

    redayState: 返回的是一个整数,表示实例对象的当前状态,该属性为只读。它返回以下值;

0,表示 XMLHttpRequest 实例已经生成,但是实例的open()方法还没有被调用。

1,表示open()方法已经调用,但是实例的send()方法还没有调用,仍然可以使用实例的setRequestHeader()方法,设定 HTTP 请求的头信息。

2,表示实例的send()方法已经调用,并且服务器返回的头信息和状态码已经收到。

3,表示正在接收服务器传来的数据体(body 部分)。

4,表示服务器返回的数据已经完全接收,或者本次接收已经失败。

    onredaystatachange 这个属性属于一个监听函数:通信过程中,每当实例对象发生状态变化,它的readyState属性的值就会改变。这个值每一次变化,都会触发readyStateChange事件。

这里写一个简单的写法:

xmlhttp.onreadystatechange = function () {
  if (xmlhttp.readyState == 4) {
    if (xmlhttp.status == 200) {
      fn(xmlhttp.responseText)
    }
  }
}
 
     responseText属性:属性返回从服务器接受到的字符串,该属性为只读;只有HTTP请求完成后接受以后,该属性才会包含完整的数据;
 
     status属性:

XMLHttpRequest.status属性返回一个整数,表示服务器回应的 HTTP

状态码。一般来说,如果通信成功的话,这个状态码是200;如果服务器没有返回状态码,那么这个属性默认是200。请求发出之前,该属性为0。该属性只读。

200, OK,访问正常

404, Not Found,未发现指定网址

500, Internal Server Error,服务器发生错误

    jQuery中的AJAX;

  $.ajax({

      type:"post",

      url:"",

      async:true,

      data:{},

      success:function(data){

        console.log(data)

    }

  })

  这是jQuery中提供的ajax方法

    

 
 
 
 
 
 

ajax入门级的更多相关文章

  1. 放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~)

    放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~) 笔者声明:只用于学习交流,不用于其他途径.源代码已上传github.githu地址:https://github.com/Erma-Wa ...

  2. 从头开始一步一步实现EF6+Autofac+MVC5+Bootstarp极简前后台ajax表格展示及分页(二)前端修改、添加表格行点击弹出模态框

    在前一篇中,由于不懂jquery,前端做的太差了,今天做稍做修改,增加一个跳转到指定页面功能,表格行点击样式变化.并且在表格中加入bootstarp的按钮组,按钮点击后弹出模态框,须修改common, ...

  3. Jquery Ajax调用aspx页面实例

    目前,我会的几种asp.net界面与后台代码交互方式有几种: 1.webform+服务器控件交互: 2.webform+jquery+ajax+一般处理程序交互: 3.webform+jquery+a ...

  4. 反向ajax实现

    在过去的几年中,web开发已经发生了很大的变化.现如今,我们期望的是能够通过web快速.动态地访问应用.在这一新的文章系列中,我们学习如何使用反 向Ajax(Reverse Ajax)技术来开发事件驱 ...

  5. Flask 教程 第十四章:Ajax

    本文翻译自The Flask Mega-Tutorial Part XIV: Ajax 这是Flask Mega-Tutorial系列的第十四部分,我将使用Microsoft翻译服务和少许JavaSc ...

  6. mui初级入门教程(三)— html5+ XMLHttpRequest 与mui ajax用法详解

    文章来源:小青年原创发布时间:2016-05-29关键词:mui,html5+,XMLHttpRequest,ajax,懒加载转载需标注本文原始地址: http://zhaomenghuan.gith ...

  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. WinEdt && LaTex(五)—— 内容的排版

    1. 无序列表 需要的环境是\begin{itemize} \end{itemize} \begin{itemize} \item hello \item world \end{itemize} 2. ...

  2. ude—基于udp的全双工可靠传输协议

    ude是一款基于udp的可靠传输协议,专门用于在数据传输方面对实时性要求较高的应用领域.    tcp协议虽然能保证数据的可靠传输,但它有以下几个缺点:1.tcp的数据确认机制会导致发送方重复发送一些 ...

  3. Opencv决策树分类器应用

    机器学习在数据挖掘.计算机视觉.搜索引擎.医学诊断.证券市场分析.语言与手写识别等领域有着十分广泛的应用,特别是在数据分析挥着越来越重要的作用.在机器学习中,决策树是最基础且应用最广泛的归纳推理算法之 ...

  4. ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 基础教程总结 ASP.NET Core 基础教程总算是有了个简单 ...

  5. 王立平--RemoteView

    RemoteView它将在两个地方被使用:一个是在AppWidget,另外一个是在Notification. RemoteView是用来描写叙述一个垮进程显示的view 1.AppWidget---R ...

  6. Gtk+/Gtkmm介绍与安装(有继承关系图)

    GTK+是一套跨平台的,以C语言编写的GUI类库,它起源于GNU的图像处理程序"GIMP",因而被起名为"The GIMP Toolkit",从一开始它就被设计 ...

  7. JavaScript知识树

  8. 利用MAC OS X 自带的磁盘工具提取光盘镜像ISO文件

    虽说渐渐地Mac笔记本基本告别内置光驱时代了,随着网络的普及,使用到光驱的机会也渐少,但有时又难免需要光驱,比如二货出版社的随书光盘等…我们可以通过USB外置光驱将光盘内容提取为ISO文件保存到电脑里 ...

  9. poj1548Robots dfs实践

    //搜索每一行 //该生产线的整点已被清除 //然后位置,然后转移到下一个步走的最后一点 //然后,所有点的下面一行清晰 //然后重复上面的操作 #include<iostream> #i ...

  10. CenOS7 docker部署lnmp环境

    Step1:下载lnmp镜像 [root@docker html]# docker pull winstonpro/lnmp Step2:启动lnmp镜像的docker实例 [root@docker ...