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获取数据,动态修 ...
随机推荐
- 简约之美Jodd-http--深入源码理解http协议
Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! jodd-http是一个轻巧的HTTP客户端.现在我们以一个简单的示例从源码层看看是如何实现的? Http ...
- 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~
一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...
- angluarjs2项目生成内容合并到asp.net mvc4项目中一起发布
应用场景 angular2(下文中标注位NG2)项目和.net mvc项目分别开发,前期采用跨域访问进行并行开发,后期只需要将NG2项目的生产版本合并到.net项目. NG2项目概述 ng2项目采用的 ...
- 高德地图api实现地址和经纬度的转换(python)
利用高德地图web服务api实现地理/逆地址编码 api使用具体方法请查看官方文档 文档网址:http://lbs.amap.com/api/webservice/guide/api/georegeo ...
- 去IOE的一点反对意见以及其他
某天在机场听见两老板在聊天,说到他们目前销售的报表老跟不上的问题,说要请一个人,专门合并和分析一些发过来的excel表格,我真想冲上去说,老板,你需要的是一个信息处理的系统,你需要咨询么.回来一直耿耿 ...
- Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决
前提: 1.安装Android Studio(过程略) 2.官网下载OpenCV for Android 网址:http:opencv.org/downloads.html 我下载的是下图的版本 3. ...
- 【代码笔记】iOS-获得当前的月的天数
一,代码. #import "ViewController.h" @interface ViewController () @end @implementation ViewCon ...
- 《月之猎人 (Moon Hunters)》主角设计
原文链接 游戏开发人员,你们好! 我是 Kitfox Games 工作室的总监 Tanya,我们的工作室位于加拿大的蒙特利尔,拥有六名员工. 我们 3 月份发布了<月之猎人>游戏的桌面版, ...
- SpringMVC_简单小结
SpringMVC是一个简单的.优秀的框架.应了那句话简单就是美,而且他强大不失灵活,性能也很优秀. 机制:spring mvc的入口是servlet,而struts2是filter(这里要指出,fi ...
- POJ3693 Maximum repetition substring [后缀数组 ST表]
Maximum repetition substring Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9458 Acc ...