[JS笔记]Ajax基础

Ajax定义

AJAX = Asynchronous[eɪˈsɪŋkrənəs] JavaScript and XML(异步的 JavaScript 和 XML)
AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。关于在Eclipse上部署Tomcat服务器的文章可以参考https://blog.csdn.net/yerenyuan_pku/article/details/51830104

一个Ajax的例子

创建一个“获取”按钮,点击时能够获取服务器中的aaa.txt中的内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<script>
    window.onload=function(){
        var oBtn=document.getElementById('btn');
        oBtn.onclick=function(){
            var oAjax=new XMLHttpRequest();//创建ajax对象
            oAjax.open('GET','aaa.txt',true);//连接服务器
            oAjax.send();//发送请求
            oAjax.onreadystatechange=function(){
                if(oAjax.readyState==4){//读取完成
                    if(oAjax.status==200){
                        alert('成功'+oAjax.responseText);
                    }
                    else{
                        alert('失败'+oAjax.status);
                    }
                }
            }
        }
    }
</script>
<body>
    <input type="button" value="获取" id="btn">
</body>
</html>

分析Ajax的使用

1、使用Ajax一般分为4个步骤
(1)创建XMLHttpRequest对象
Ajax技术的核心就是XMLHttpRequest对象,这个对象在浏览器中的脚本与服务器之间充当中间人的角色。

var oAjax=new XMLHttpRequest();

不同浏览器实现XMLHttpRequest对象的方式不太一样,尤其是“万恶”的IE6甚至IE5,因此还需要使用if-else分支来进行兼容处理了,虽然本学渣想知道真的还有人用IE6吗…

//检测代码
if (window.XMLHttpRequest)
	{
		//  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
		oAjax=new XMLHttpRequest();
	}
	else
	{
		// IE6, IE5 浏览器执行代码
		oAjax=new ActiveXObject("Microsoft.XMLHTTP");
	}

注意:在这里XMLHttpRequest之前需要加上window对象,原因是当使用没有定义的变量(如这里直接使用XMLHttpRequest),浏览器会报错并停止执行;当用没有定义的属性(如window.XMLHttpRequest)时,浏览器会显示undefined,在判断语句中体现为false,不会停止执行代码。再或者,判断typeof XMLHttpRequest是否为undefined也可以解决问题。
(2)连接到服务器

oAjax.open('GET','aaa.txt',true);

open(method,url,async)规定请求的类型、URL 以及是否异步处理请求
method:请求类型;GET 、POST或SEND
url:文件在服务器上的位置,这里请求的文件名是aaa.txt
async:true(异步)或 false(同步)

(3)发送请求

oAjax.send();//发送请求

(4)接收返回值

oAjax.onreadystatechange=function(){
                if(oAjax.readyState==4){//读取完成
                    if(oAjax.status==200){
                        alert('成功'+oAjax.responseText);
                    }
                    else{
                        alert('失败'+oAjax.status);
                    }
                }

onreadystatechange是一个事件处理函数,它会在服务器给XMLHttpRequest对象送回响应时被触发执行。在这个处理函数中,可以根据服务器的具体响应做相应的处理。
服务器在向XMLHttpRequest对象发回响应时,该对象有许多属性可用,浏览器会在不同阶段更新readyState属性的值:

readyState存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
0: 请求未初始化
1: 服务器连接已建立
2:请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪

readyState属性的值等于4时,请求已完成,且响应已就绪,读取过程完成。当然读取过程完成不代表读取成功,浏览器仍有可能读取失败,因此还需要下面的判断:

if(oAjax.status==200){}
else{}

当status=200时,表示 “OK”,读取成功;当status=404时,表示未找到页面。

关于GET和POST

与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。然而,在以下情况中,请使用 POST 请求:
(1)无法使用缓存文件(更新服务器上的文件或数据库)
(2)向服务器发送大量数据(POST 没有数据量限制)
(3)发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

关于异步与同步
这里给出本萌新最浅显的理解,结合执行栈、队列和线程等的具体解释大家可以自行百度。

异步:任务可同时执行
同步:执行完一个任务才能执行下一个任务

关于缓存
浏览器的缓存机制能使服务器响应更快和减少网络带宽消耗。但是这里出现了一个问题,先运行一下刚才的代码

在这里插入图片描述
我在aaa.txt里面存的是abc,所以没有问题,但当我修改文本为abc123,再次运行代码
在这里插入图片描述
发现还是显示abc。原因在于浏览器读取了上一次缓存的内容,无论怎么刷新,也是如此。
解决办法:用getTime()获取时间戳,使其读取当前时刻的文件

oAjax.open('GET','aaa.txt?t='+new Date().getTime(),true);

在这里插入图片描述
成功了!

将刚才所写的内容封装成函数调用

function ajax(url,funSucc,funFail){
    var oAjax=new XMLHttpRequest();//创建ajax对象
    oAjax.open('GET',url+'?t='+new Date().getTime(),true);//连接服务器
    oAjax.send();//发送请求
    oAjax.onreadystatechange=function(){
        if(oAjax.readyState==4){//读取完成
            if(oAjax.status==200){
                funSucc(oAjax.responseText);
            }
            else{
                if(funFail())
                    funFail(oAjax.status);
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此微信小程序医院挂号预约系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。微信小程序医院挂号预约系统有管理员,用户两个角色。管理员功能有个人中心,用户管理,医生信息管理,医院信息管理,科室信息管理,预约信息管理,预约取消管理,留言板,系统管理。微信小程序用户可以注册登录,查看医院信息,查看医生信息,查看公告资讯,在科室信息里面进行预约,也可以取消预约。微信小程序医院挂号预约系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值