ajax-异步JavaScript和XML
什么是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的更多相关文章
- 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 ...
- AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 最大的 ...
- 【JavaScript】AJAX总结(异步JavaScript和XML)
AJAX介绍 通过 AJAX,你可以创建更好.更快以及更友好的 WEB 应用程序. AJAX 基于 JavaScript 和 JavaScript的XMLHttpRequest对象. AJAX 应用程 ...
- 什么是AJAX? AJAX:”Asynchronous JavaScript and XML”中文意思:异步JavaScript和XML。
指一种创建交互式网页应用的网页开发技术. AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词. 不是指一种单一的技术,而是有机地利用了一系列相关的技术: web标准( Stan ...
- 什么是 ajax?----异步 javascript 和 xml
GET 用于请求服务器数据 POST 用于上传数据到服务器,或者修改服务器数据 ajax 异步通信,实现页面的局部刷新,按需获取数据,节约带宽,带来更好的用户体验 客户端与服务器在不必刷新浏览器的情况 ...
- ajax(Asynchronous JavaScript and XML) 异步js或者xml
1.XMLHttpRequest 对象:向服务器发送局部的请求,异步获取执行 a.浏览器支持 b.语法: xmlhttp==new XMLHttpRequest(); xmlhttp.open(&qu ...
- jquery与服务器交换数据的利器--ajax(异步javascript and xml)
load() 方法从服务器加载数据,并把返回的数据放入被选元素中. 一.下面的例子把 "demo_test.txt" 文件中 id="p1" 的元素的内容,加载 ...
- Ajax(Asychronous JavaScript and XML)笔记
1 Ajax简介 1 ajax概念 2 什么是同步?什么是异步? 3 ajax原理 2 JavaScript原生的ajax 1 ajax.html代码 <!DOCTYPE html> &l ...
- ajax 异步请求webservice(XML格式)
function callAjaxWebservice(){ alert("call ajax"); try { $.ajax({ type: "POST", ...
- ajax异步 —— javascript
目录 ajax是什么 原生ajax jquery ajax ajax跨域 ajax是什么 作用:不必重新加载整个页面,更新部分页面内容. 大概使用过程:通过后台提供的数据接口,ajax获取数据,动态修 ...
随机推荐
- 重温Http协议--请求报文和响应报文
http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...
- StringMVC 中如何做数据校验
步骤一:引入四个jar包 步骤二:注册类型转换器 <context:component-scan base-package="cn.happy.controller"> ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 代码的坏味道(20)——过度耦合的消息链(Message Chains)
坏味道--过度耦合的消息链(Message Chains) 特征 消息链的形式类似于:obj.getA().getB().getC(). 问题原因 如果你看到用户向一个对象请求另一个对象,然后再向后者 ...
- 游戏AI系列内容 咋样才能做个有意思的AI呢
游戏AI系列内容 咋样才能做个有意思的AI呢 写在前面的话 怪物AI怎么才能做的比较有意思.其实这个命题有点大,我作为一个仅仅进入游戏行业两年接触怪物AI还不到一年的程序员来说,来谈这个话题,我想我是 ...
- C# Entity Framework并发处理
原网站:C# Entity Framework并发处理 在软件开发过程中,并发控制是确保及时纠正由并发操作导致的错误的一种机制.从 ADO.NET 到 LINQ to SQL 再到如今的 ADO.NE ...
- Web开发安全之文件上传安全
很长一段时间像我这种菜鸡搞一个网站第一时间反应就是找上传,找上传.借此机会把文件上传的安全问题总结一下. 首先看一下DVWA给出的Impossible级别的完整代码: <?php if( iss ...
- TCP的数据传输小结
TCP的交互数据流 交互式输入 通常每一个交互按键都会产生一个数据分组,也就是说,每次从客户传到服务器的是一个字节的按键(而不是每次一行) 经受时延的确认 通常TCP在接受到数据时并不立即发送ACK: ...
- MMORPG大型游戏设计与开发(攻击区域 扇形)
距离上次发布已经有了很长一段时间,期间由于各种原因没有更新这方面的技术分享,在这里深表遗憾.在MMO或其他的游戏中,会有针对各种形状的计算,通常在攻击区域里不会很复杂,常见的为矩形.圆形.扇形.今天分 ...
- Topshelf 学习 跨平台
Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主. 官网:http://topshelf-project.com Git ...