什么是ajax?

  ajax是异步的javascript和XML ( Asynchronous Javascript And XML )
优点:节省用户操作时间,提高用户体验。减少数据请求次数。

什么是异步?同步?

  异步是非阻塞模式,前面的代码不会影响后面代码执行。
同步是阻塞模式,要前面的执行后再执行后面的。

ajax请求后台数据流程

  1 创建 ajax 对象
var xhr=new XMLHttpRequest();
  兼容ie低版本:
if(window.XMLHttpRequest){
  xhr=new XMLHttpRequest();
}else{
  //ie低版本
  xhr=new ActiveXObject('Microsoft.XMLHTTP');
}
  2 创建请求
调用open方法。
xhr.open()
  open方法有三个参数。

  第一个: 提交方式(method) ,一般有两种。 get 和 post 。
第二个: 请求地址url。
第三个: 异步还是同步。 true 和 false 。 默认为 true ,异步。
xhr.open('get','1.txt','true')
  3 发送请求
相当于表单 form 中的 submit 。
调用 send() 方法。
xhr.send();
  4 判断 ajax 状态
//当状态发生改变
xhr.onreadystatechange=function(){
  //如果是所需状态
  if(xhr.readyState==4){
    alert(xhr.responseText) //弹出请求到的文本数据
  }
}
  onreadystate 当ajax状态发生改变的时候
readystate 状态:
0 ajax对象已创建。
1 开始调用 send 方法,发送数据。
2 数据已返回,但没有解析。
3 表示数据正在解析中。
4 表示所有工作已经完成,可以调用数据了。

例:通过ajax请求txt中的文本

  1. 搭建本地服务器环境。
2. 创建文件 1.txt ,内容:“txt中的文本”
3. 创建文件 index.html ,js内容:
//1 创建 ajax 对象
var xhr=new XMLHttpRequest();
//2 创建请求
xhr.open('get','1.txt','true')
//3 发送请求
xhr.send();
//4 判断状态
xhr.onreadystatechange=function(){
  if(xhr.readyState==4){
    alert(xhr.responseText)
  }
}
  4. 访问 127.0.0.1 。

  还可以同时判断服务器状态码: status==200 表示所请求的文档已找到并正常返回。
if(xhr.readyState==4&&xhr.status==200){
  alert(xhr.responseText)
}

服务器状态码

  200 ok 请求的文档已经找到并正确返回。
304 not modified 拥有一个本地缓存副本,服务端内容与其相同。
403 Forbidden 请求者对所请求的文档不具备相应权限。
404 notfound 所请求的文档没有找到。

get与post的区别

  post
统一把数据放在页面的请求头中
理论上 post 携带的数据没有限制(但是服务器一般有限制)。
get
统一把数据放在url?的后面
get 方式提交的数据长度有限制,因为 url 长度有限制,数据量根据浏览器不同。 相同点:
把数据名和数据值用等号(=)连接,多组数据用和号(&)连接。 不同点:
与 post 相比, get 方式简单、快速,大部分情况下能用。
以下几种使用post请求:
1. 向服务器发送大量数据;
2. 向服务器发送未知字符的用户输入时,post更加可靠。(不知道用户会输入什么的时候)

例:通过get发送和接收数据

  get.php 文件中的内容:
<?php
  header('content-type:text/html,charset="utf-8"');
  error_reporting(0);
 
  $username=$_GET['username'];
  $age=$_GET['age'];
 
  echo "您的姓名是:{$username},年龄是{$age}";
  普通方式发送和接收数据:




index.html 文件中的内容:
    <!--
Author: XiaoWen
Create a file: 2016-12-28 13:51:39
Last modified: 2017-01-04 18:40:25
Start to work:
Finish the work:
Other information:
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax</title>
</head>
<body>
<form action="get.php" method="get" >
姓名: <input type="text" name="username"/>
年龄: <input type="text" name="age"/>
<input type="submit" value="提交" />
</form>
</body>
</html>
  当点击提交后,页面的url跳转并变成:
http://127.0.0.1/get.php?username=小文&age=21 get发送的数据是拼接在url中的。 可以看出:
get.php?
1 请求文件的后面以问号(?)拼接:
username=小文&age=21
2 数据以 name属性=value值 的方式拼接,多个数据用和号(&)接连: 上面是普通的提交方式,提交时页面url会改变会跳转。
那么,使用 ajax 是这样的:
其实也就是 不使用html标签来发送请求,而是使用js来拼接出url,使用 ajax 来发送和接收数据

ajax发送和接收数据:



  index.html 文件中的内容:
    <!--
Author: XiaoWen
Create a file: 2016-12-28 13:51:39
Last modified: 2017-01-04 18:40:36
Start to work:
Finish the work:
Other information:
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax</title>
</head>
<body>
<!-- <form action="get.php" method="get" > -->
姓名: <input type="text" name="username"/>
年龄: <input type="text" name="age"/>
<input type="submit" value="提交" />
<!-- </form> -->
</body>
<script>
var input=document.getElementsByTagName('input');
var str;
input[2].onclick=function(){
//http://127.0.0.1/get.php?username=小文&age=21
str='get.php?'+input[0].name+'='+input[0].value+'&'+input[1].name+'='+input[1].value;
var xhr=new XMLHttpRequest()
xhr.open('get',str,true)
xhr.send()
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
console.log(xhr.responseText)
}
}
}
</script>
</html>

state 和 status

  state 已知的

  status 不确定的

  例:

  readyState 值一般就5个
  statusText 可以任意的文字
  onreadystatechange 值一般就5个
  window.status 可以任意的文字

ajax-异步JavaScript和XML的更多相关文章

  1. How to make an HTTP request 异步 JavaScript 和 XML

    https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started In order to make an HTTP request to th ...

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

    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 最大的 ...

  3. 【JavaScript】AJAX总结(异步JavaScript和XML)

    AJAX介绍 通过 AJAX,你可以创建更好.更快以及更友好的 WEB 应用程序. AJAX 基于 JavaScript 和 JavaScript的XMLHttpRequest对象. AJAX 应用程 ...

  4. 什么是AJAX? AJAX:”Asynchronous JavaScript and XML”中文意思:异步JavaScript和XML。

    指一种创建交互式网页应用的网页开发技术. AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词. 不是指一种单一的技术,而是有机地利用了一系列相关的技术: web标准( Stan ...

  5. 什么是 ajax?----异步 javascript 和 xml

    GET 用于请求服务器数据 POST 用于上传数据到服务器,或者修改服务器数据 ajax 异步通信,实现页面的局部刷新,按需获取数据,节约带宽,带来更好的用户体验 客户端与服务器在不必刷新浏览器的情况 ...

  6. ajax(Asynchronous JavaScript and XML) 异步js或者xml

    1.XMLHttpRequest 对象:向服务器发送局部的请求,异步获取执行 a.浏览器支持 b.语法: xmlhttp==new XMLHttpRequest(); xmlhttp.open(&qu ...

  7. jquery与服务器交换数据的利器--ajax(异步javascript and xml)

    load() 方法从服务器加载数据,并把返回的数据放入被选元素中. 一.下面的例子把 "demo_test.txt" 文件中 id="p1" 的元素的内容,加载 ...

  8. Ajax(Asychronous JavaScript and XML)笔记

    1 Ajax简介 1 ajax概念 2 什么是同步?什么是异步? 3 ajax原理 2 JavaScript原生的ajax 1 ajax.html代码 <!DOCTYPE html> &l ...

  9. ajax 异步请求webservice(XML格式)

    function callAjaxWebservice(){ alert("call ajax"); try { $.ajax({ type: "POST", ...

  10. ajax异步 —— javascript

    目录 ajax是什么 原生ajax jquery ajax ajax跨域 ajax是什么 作用:不必重新加载整个页面,更新部分页面内容. 大概使用过程:通过后台提供的数据接口,ajax获取数据,动态修 ...

随机推荐

  1. 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡

    一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务 ...

  2. 漫扯:从polling到Websocket

    Http被设计成了一个单向的通信的协议,即客户端发起一个request,然后服务器回应一个response.这让服务器很为恼火:我特么才是老大,我居然不能给小弟发消息... 轮询 老大发火了,小弟们自 ...

  3. 0-1背包问题蛮力法求解(c++版本)

    // 0.1背包求解.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream>   #define ...

  4. Ajax 概念 分析 举例

    Ajax是结合了访问数据库,数据访问,Jquery 可以做页面局部刷新或者说是页面不刷新,我可以让页面不刷新,仅仅是数据的刷新,没有频繁的刷页面,是现在比较常用的一种方式做页面那么它是怎么实现页面无刷 ...

  5. shell简介

    Shell作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. shell使用的熟练程度反映了用户对U ...

  6. springmvc+bootstrap+jquerymobile完整搭建案例(提供下载地址)

    用一张简单的截图说明下,然后提供一个下载地址. bootstrap的大部分样式官方都是写好的,所以只需要class="官方样式即可",具体可以看官方的案例,下面来个地址 http: ...

  7. 自己实现简单Spring Ioc

    IoC则是一种 软件设计模式,简单来说Spring通过工厂+反射来实现IoC. 原理简单说明: 其实就是通过解析xml文件,通过反射创建出我们所需要的bean,再将这些bean挨个放到集合中,然后对外 ...

  8. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  9. ObserverPattern(观察者模式)

    import java.util.ArrayList; import java.util.List; /** * 观察者模式 * @author TMAC-J * 牵一发而动全身来形容观察者模式在合适 ...

  10. Spring(三)__aop编程

    aop( aspect oriented programming ) 面向切面编程,是对所有对象或者是一类对象编程 几个重要的概念: 1.切面(aspect):要实现的交叉功能,是系统模块化的一个切面 ...