自己如何创建ajax?创建ajax的步骤详解(附实例解析)
本篇文章主要讲述了关于如何自己创建一个ajax的案例,现在就让我们一起来看看这篇文章吧
学习ajax一段时间了,现在来总结一下ajax的构建与功能。
ajax的用处是向后台请求数据的,其特点是异步请求数据(无刷新读取数据),在ajax没有出现之前,如果填写一个项目比较多的表单对用户来说简直是一个噩梦,如果中间哪一个环节填错了,则在最终提交的时候出现报错,然后就是需要重新填写,经过几次填写过后用户就失去了填写的欲望了。然后在ajax出现后这一问题得到了很好地解决,每填一个项目则会通过服务器验证结果并返回结果,在一定程度上提高了效率,并给用户带来了更好的体验。(想看更多就到PHP中文网AJAX开发手册栏目中学习)
现在就来讲解使用ajax中所存在的一些问题:首先,在IE下面数据更新不及时(缓存引起的),用一个URL只读取一次,所以需要在每次刷新的时候更改URL,然而在域名的?后的参数并不影响页面的获取,而因为URL的不同浏览器会重新加载页面,这样就解决了页面的缓存的问题。可以传url+'?t='+new Date().getTime();或者用Math.random()也是可以的;其次接收的数据格式有问题,这是就需要统一编码;再次就是ajax读取任何东西,返回来的都是字符,这时就需要我们自己对数据进行解析。接下来就自己写一个ajax:
1.创建ajax对象 var oAjax=new XMLHttpRequest() ~高版本浏览器或new ActiveXObject('Microsoft.XMLHTTP')~IE
2.建立连接 oAjax.open(方式,地址,异步)
3.发送请求 oAjax.send();
4.接受 onreadystatechange读取状态改变时
oAjax.readyState 状态码
0. ajax对象刚被创建出来(new 了一个ajax对象)
1. 与服务器连接上(open方法刚执行)
2. 发送完成
3. 接收完成(文件头部)
4. 接收完成(身子),内容请求失败也会有4
其中http状态码:
oAjax.status 200<=n<300或n==304 表示发送成功
oAjax.responseText 返回数据
encodeURIComponent(str) 字符串作为URI 组件进行编
ajax:
//data 后台要的数据 //options = url,data,type,timeout,success,error function ajax(options){ options=options||{}; options.data=options.data||{}; options.type=options.type||'get'; options.timeout=options.timeout||0; //整理data数据 options.data.t=Math.random();//给data创建一个t 键 var arr=[]; for(var key in options.data){ arr.push(key+'='+encodeURIComponent(options.data[key])); } var str=arr.join('&'); if(window.XMLHttpRequest){//1 var oAjax=new XMLHttpRequest(); }else{ var oAjax=new ActiveXObject('Microsoft.XMLHTTP'); } if(options.type=='get'){ oAjax.open('get',options.url+'?'+str,true);//2 oAjax.send();//3 }else{//post oAjax.open('post',options.url,true); //设定ajax的头信息 oAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); oAjax.send(str); } oAjax.onreadystatechange=function(){//4 if(oAjax.readyState==4){ if(oAjax.status>=200 && oAjax.status<300 || oAjax.status==304){ clearInterval(timer); options.success && options.success(oAjax.responseText) }else{ options.error && options.error(oAjax.status); } } }; if(options.timeout){ var timer=setTimeout(function(){ alert('超时了'); oAjax.abort(); //终止加载 },options.timeout); } }
1.创建ajax函数,因为ajax中的各个参数不定,而且排列位置也不同,所以要用到json做数据,传入参数options,其中options为可选项,如果传了就用传了的数据,没有传的话就用默认的参数,其中有发送的方式type和超时时间设定以及data。
2.其中url需要在后面添加一些随机的变量,所以可以先给data添加一个键options.data.t=Math.random();然后对url进行编码,再对数据进行处理。
3.然后就判断浏览器,对于chrome以及ff都支持window.XMLHttpRequest,而对于IE浏览器只支持ActiveXObject('Microsoft.XMLHTTP'),然后判断其发送的类型,如果为get方式,则需要在url后面加上刚才设置的随机数,然后就可以发送数据了oAjax.send();然而对于post方式还需要设定ajax的头信息oAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');然后再发送数据
4.对状态改变时进行判断oAjax.onreadystatechange当oAjax.readyState==4时表明接收完成此时再判断状态码oAjax.status>=200 && oAjax.status<300 || oAjax.status==304时表明成功了此时进行成功时的回调函数,否则就是失败了,此时返回状态码,告诉用户。
5.在这中间可以设置一个定时器,当在设定的时间内还没有获取成功则表明超时了,此时需要终止加载oAjax.abort(),并且告诉用户超时了,如果在设置的时间内加载成功了,则清除定时器。
此时ajax就封装完毕了,调用时就简单了
ajax({ data: {a:3,b:5}, url: 'php/php_get.php', success:function(str){ alert(str); } });
本篇文章到这就结束了(想看更多就到PHP中文网AJAX使用手册栏目中学习),有问题的可以在下方留言提问。
以上是自己如何创建ajax?创建ajax的步骤详解(附实例解析)的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

如何使用WebSocket和JavaScript实现在线语音识别系统引言:随着科技的不断发展,语音识别技术已经成为了人工智能领域的重要组成部分。而基于WebSocket和JavaScript实现的在线语音识别系统,具备了低延迟、实时性和跨平台的特点,成为了一种被广泛应用的解决方案。本文将介绍如何使用WebSocket和JavaScript来实现在线语音识别系

WebSocket与JavaScript:实现实时监控系统的关键技术引言:随着互联网技术的快速发展,实时监控系统在各个领域中得到了广泛的应用。而实现实时监控的关键技术之一就是WebSocket与JavaScript的结合使用。本文将介绍WebSocket与JavaScript在实时监控系统中的应用,并给出代码示例,详细解释其实现原理。一、WebSocket技

如何利用JavaScript和WebSocket实现实时在线点餐系统介绍:随着互联网的普及和技术的进步,越来越多的餐厅开始提供在线点餐服务。为了实现实时在线点餐系统,我们可以利用JavaScript和WebSocket技术。WebSocket是一种基于TCP协议的全双工通信协议,可以实现客户端与服务器的实时双向通信。在实时在线点餐系统中,当用户选择菜品并下单

如何使用WebSocket和JavaScript实现在线预约系统在当今数字化的时代,越来越多的业务和服务都需要提供在线预约功能。而实现一个高效、实时的在线预约系统是至关重要的。本文将介绍如何使用WebSocket和JavaScript来实现一个在线预约系统,并提供具体的代码示例。一、什么是WebSocketWebSocket是一种在单个TCP连接上进行全双工

JavaScript和WebSocket:打造高效的实时天气预报系统引言:如今,天气预报的准确性对于日常生活以及决策制定具有重要意义。随着技术的发展,我们可以通过实时获取天气数据来提供更准确可靠的天气预报。在本文中,我们将学习如何使用JavaScript和WebSocket技术,来构建一个高效的实时天气预报系统。本文将通过具体的代码示例来展示实现的过程。We

用法:在JavaScript中,insertBefore()方法用于在DOM树中插入一个新的节点。这个方法需要两个参数:要插入的新节点和参考节点(即新节点将要被插入的位置的节点)。

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

JavaScript是一种广泛应用于Web开发的编程语言,而WebSocket则是一种用于实时通信的网络协议。结合二者的强大功能,我们可以打造一个高效的实时图像处理系统。本文将介绍如何利用JavaScript和WebSocket来实现这个系统,并提供具体的代码示例。首先,我们需要明确实时图像处理系统的需求和目标。假设我们有一个摄像头设备,可以采集实时的图像数
