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. Leetcode 238 Product of Array Except Self 递推

    给出一个数组 nums[i](i = 0,1,...,n-1)  输出数组output[i]满足 output[i] = nums[0] * num[1] * num[2] *..*num[i-1] ...

  2. WPF多点触摸放大缩小旋转

    原文:WPF多点触摸放大缩小旋转 版权声明:本文为博主原创文章,需要转载尽管转载. https://blog.csdn.net/z5976749/article/details/40118437 如果 ...

  3. SICP 1.11-1.13

    1.11 递归版本 (define (f n) (cond ((< n ) n) ()) (* (f (- n )) ) (* (f (- n )) ))))) 迭代版本 (define (f ...

  4. Android SharedPreferences中apply和commit的效率差距

    Android SharedPreferences中apply和commit的效率差距 经常看到它俩的速度有差别,apply和commit.到底差距多少,下面做一个统计.   apply commit ...

  5. 利用Python sklearn的SVM对AT&T人脸数据进行人脸识别

    要求:使用10-fold交叉验证方法实现SVM的对人脸库识别,列出不同核函数参数对识别结果的影响,要求画对比曲线. 使用Python完成,主要参考文献[4],其中遇到不懂的功能函数一个一个的查官方文档 ...

  6. 【Git】打标签

    打标签 同大多数 VCS 一样,Git 也可以对某一时间点上的版本打上标签.人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做.本节我们一起来学习如何列出所有可用的标签,如何新建标签,以 ...

  7. c#获取电脑运行状态(cpu,内存,网络,系统运行时间)

    public class DeviceMonitor { static readonly PerformanceCounter cpuCounter = new PerformanceCounter( ...

  8. VS点击调试卡住的问题解决方案(转载)

    本来今天好好的,不知道弄到了什么,调试不了了,一点击立马卡住,就一直在那转,就在网上找了找解决方案,下面给大家列出来几种可能会卡住的问题已经解决方案 1:加载调试符号引起的卡住 解决方案: 在“选项” ...

  9. 如何线程调用C++类成员函数

    方法就是: 1,写成静态成员函数 2,参数为 (void* __this)用来传入类 对象指针(this) 3,进入函数首先    C类名 *_this = (C类名*)__this;  转化为对象指 ...

  10. JS解析Json 数据并跳转到一个新页面,取消A 标签跳转

    JS解析Json 数据并跳转到一个新页面,代码如下 $.getJSON("http://api.cn.abb.com/common/api/staff/employee/" + o ...