JS实现Ajax的方法分析
作者:鬼畜十三 发布时间:2024-11-16 13:59:53
标签:JS,Ajax
本文实例分析了JS实现Ajax的方法。分享给大家供大家参考,具体如下:
一、什么是Ajax
不刷新的情况下读取数据或提交数据
(最早出现ajax:谷歌地图,拖动一下出现一片新的视野)
应用:用户注册、在线聊天、微博
特性:只能从服务器上去读取数据(所以我们需要配置自己的服务器程序AMP)
二、使用Ajax
1.基础:请求并显示静态TXT文件
btn.onclick=function(){
ajax('abc.txt',function(str){
alert(str);
});
}
①Ajax里面文件的编码要和页面的编码一致
②缓存、阻止缓存(好处大于缺点,所以不能什么时候都清缓存)
缓存能帮助我们加速网络访问,所谓缓存,就是服务器上这个文件,它只读一次,第二次就从你的硬盘里、缓存里直接去拿,而不是真的通过网络来请求
有时候我们需要阻止缓存(比如服务器上东西变化了,但客户端请求来的还是原来的东西),办法如下,加时间戳:
ajax('abc.txt?t='+new Date().getTime(),function(str){});
//new Date().getTime()为现在的毫秒数,用户绝对不可能在1毫秒内点两次,所以每次请求的t都不一样
2.动态数据:请求Js(或json)文件
Ajax从服务器上读取的所有东西都是以文本的形式(字符串)存在的,如何转换?
eval()计算字符串里的值
ajax('abc.txt',function(str){
var arr=eval(str);
alert(arr);
});
例子:分页
<ul id="list">
</ul>
<a href="#"></a>
<a href="#"></a>
<a href="#"></a>
window.onload=function(){
var oUl=getElementById("list");
var aBtn=getElementsByTagName("a");
var i;
for(i=0;i<aBtn.length;i++){
aBtn[i].index=i;
aBtn[i].onclick=function(){
ajax('page'+(this.index+1)+'.txt',function(str){
var aData=eval(str);
oUl.innerHTML='';
for(i=0;i<aData.length:i++){
var oLi=document.createElement("li");
oLi.innerHTML='<strong>'+aData[i].user+'</strong><i>'+aData[i].pass+'</i>';
oUl.appendChild(oLi);
}
});
};
}
};
三、Ajax原理
HTTP请求方法
1.GET--用于获取数据(如浏览贴子) 把数据放在URL(网址)里面来提交 安全性低、容量低、便于分享(将网址发给别人)
2.POST--用于上传数据(如用户注册) 把数据放在不是URL的地方 安全性一般、容量几乎无限、不便于分享
四、封装一个自己的Ajax函数
1.创建Ajax
2.连接服务器
3.发送请求
4.接收返回
function ajax(url,fnSucc,fnFaild){
//1.创建
var oAjax=null;
if(window.XMLHttpRequest){ //对ie6来说,直接用XMLHttpRequest是不存在的会出错
oAjax=new XMLHttpRequest(); //ie6以上
}else{
oAjax=new ActiveXObject("Microsoft.XMLHTTP"); //ie6
}
//2.连接服务器,open(方法,url,是否异步)
oAjax.open('GET',url,true);
//3.发送请求
oAjax.send();
//4.接收返回 OnReadyStateChange
oAjax.onreadystatechange=function(){ //onreadystatechange事件
if(oAjax.readyState==4){ //readyState属性:请求状态 4是完成(完成不代表成功)
if(oAjax.status==200){ //status属性:请求结果 200代表成功
fnSucc(oAjax.responseText); //responseText属性:服务器发回给我们的内容
}
else{
if(fnFaild){
fnFaild();
}
}
}
};
};
希望本文所述对大家JavaScript程序设计有所帮助。


猜你喜欢
- 说明和代码如下:<%@ language = vbscript%><% 
- 实现一个AuditLog的功能,是B/S结构专案。 每个用户可以登录系统,在程序中操作数据(添加,更新和删除)需要实现记录操作跟踪。是谁添加
- 最近项目中需要Python的打包,看到网上也没有很详细的资料,于是做了一些示例程序。研究了一下,Python如何在Windows和Linux
- 如果你想让你的IIS支持wml,做个wap网站,只需作小小的改变就行了.虽然目前支持wml的虚拟主机极少,但是自己在本机上玩玩也好的.首先在
- 目录一、代码分析二、完整代码写在最后想必写毕设的时候,大家都会遇到一个问题,那就是得在明评版的论文里面插入一个独创性声明。就因为这个事情,我
- 什么是PromisePromise 是异步编程的一种解决方案,其实是一个构造函数,自己身上有all、reject、resolve这几个方法,
- 觉得微博手动点赞太过麻烦?其实自动点赞的实现并不困难!本篇会有Cookie、session和token方面的知识,不太了解的可以先看下web
- 今天,在完成一个小的python习题,习题的主要内容是读取一个帮助模块,并保存到本地文件。知道是用pydoc进行模块的读取,但是在windo
- created页面加载未渲染html之前执行。mounted渲染html后再执行。由于created在html模板生产之前所以无法对Dom进
- 前言现在最流行的本地存储莫过于 cookie 的应用,但浏览器对 cookie 有很多限制,最大的限制在于其对cookie 总大小
- 目录什么是引用?引用在数组和对象中的使用引用的传递引用的返回引用的取消总结什么是引用?在 PHP 中引用意味着用不同的名字访问同一个变量内容
- 实现代码如下:# -*- coding: utf-8 -*-import math, random,timeimport threading
- 利用二进制反格雷码(bynary reflected Gray code)的方式生成n个元素的全组合,Cn1+Cn2+...+Cnn,如在利
- 前言上一篇文章Go 实现 WebSockets和什么是 WebSockets我们先介绍了什么是 WebSock
- vim /etc/my.cnf注释这一行:bind-address=127.0.0.1 ==> #bind-address=127.0
- 今天使用python写了一个简单的爬虫,用来下载taptap网站的游戏截图。下面说下具体的实现方法。在搜索框中搜索“原神”打开浏览器的开发者
- 动态 web 应用也会需要静态文件,通常是 CSS 和 JavaScript 文件。理想状况下, 我们已经配置好 Web 服务器来提供静态文
- 本文实例讲述了Python日期时间Time模块。分享给大家供大家参考,具体如下:关于时间和日期模块python程序能用很多方式处理日期和时间
- 一 web框架的本质及自定义web框架我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket
- 我们可用下面的代码将服务器端变量转换为客户端的JavaScrit变量:<%@ Language=VBScript