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获取数据,动态修 ...
随机推荐
- 复杂的 Hash 函数组合有意义吗?
很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...
- 来,给Entity Framework热热身
先来看一下Entity Framework缓慢的初始化速度给我们更新程序带来的一种痛苦. 我们手动更新程序时通常的操作步骤如下: 1)把Web服务器从负载均衡中摘下来 2)更新程序 3)预热(发出一个 ...
- web全栈开发之网站开发二(弹出式登录注册框前端实现-类腾讯)
这次给大家分享的是目前很多网站中流行的弹出式登录框,如下面的腾讯网登录界面,采用弹出式登录的好处是大大提升了网站的用户体验和交互性,用户不用重新跳转到指定的页面就能登录,非常方便 先来个演示地址 要实 ...
- 【SQLServer】【恢复挂起的解决方案】附加文件时候的提示“无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。 ”【数据库恢复】
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 先贴错误: 吐槽一下: 进入正题: 新建一个同名数据库 停止MSSQL服务 替换数据库文 ...
- HTML 获取屏幕、浏览器、页面的高度宽度
本篇主要介绍Web环境中屏幕.浏览器及页面的高度.宽度信息. 目录 1. 介绍:介绍页面的容器(屏幕.浏览器及页面).物理尺寸与分辨率.展示等内容. 2. 屏幕信息:介绍屏幕尺寸信息:如:屏幕.软件可 ...
- 记录我这一年的技术之路(nodejs纯干货)
2015年12月28日23:19:54 更新koa应用.学习型网站和开发者工具等 coding伊始 开始认认真真的学习技术还是2015.10.21日开始的,记得很清楚,那天,是我在龙湖正式学习的第一天 ...
- Smarty的基本使用与总结
含义: Smarty是PHP的一个引擎模板,可以更好的进行逻辑与显示的分离,即我们常说的MVC,这个引擎的作用就是将C分离出来. 环境需求:PHP5.2或者更高版本 我使用的环境是:PHP5.3,wi ...
- 【转】39个让你受益的HTML5教程
闲话少说,本文作者为大家收集了网上学习HTML5的资源,期望它们可以帮助大家更好地学习HTML5. 好人啊! 不过,作者原来说的40个只有39个,因为第5个和第8个是重复的. 原文在此! 1. 五分钟 ...
- jQuery可拖拽3D万花筒旋转特效
这是一个使用了CSS3立体效果的强大特效,本特效使用jQuery跟CSS3 transform来实现在用户鼠标按下拖动时,环形图片墙可以跟随鼠标进行3D旋转动画. 效果体验:http://hovert ...
- Oracle SQL Developer 连接 MySQL
1. 在ORACLE官网下载Oracle SQL Developer第三方数据库驱动 下载页面:http://www.oracle.com/technetwork/developer-tools/sq ...