侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Ajax引擎 ajax请求步骤详细代码

前端  /  管理员 发布于 2年前   164

说起AJAX,可能是很多同学在很多地方都看到过,各大招聘网站上对于WEB前端和PHP程序员的技能要求清单中也是必不可少的一项。但是,ajax请求步骤详细代码以及说明却比较少见到

什么是AJAX引擎?

AJAX引擎其实是一个JavaScript对象,全写是 window.XMLHttpRequest对象,由于浏览器的版本不同,特别是老版本的IE浏览器,虽然也支持AJAX引擎,但是写法上有区别,在IE低版本中通常用 ActiveXObject对象来创建AJAX引擎。 AJAX 来自英文“Asynchronous Javascript And XML” 的缩写,也称为异步JavaScript和XML。 简言之,就是一个JS对象,可以实现在网页加载完成以后,不用刷新的情况下与服务器交互。产生极好的用户体验效果。

AJAX用来做什么?

AJAX技术广泛应用于实现用户体验良好的一个个交互功能,比如:

搜索产品时的关键词推荐

注册新用户的重名提示

现在网站几乎全部都使用Ajax技术,最具有代表使用Ajax技术的网站有:新浪微博、Google地图、百度搜索、淘宝网等等。

AJAX的实现原理

Ajax的原理简单来说通过浏览器的javascript对象XMLHttpRequest(Ajax引擎)对象向服务器发送异步请求并接收服务器的响应数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。即用户的请求间接通过Ajax引擎发出而不是通过浏览器直接发出,同时Ajax引擎也接收服务器返回响应的数据,所以不会导致浏览器上的页面全部刷新。

AJAX请求步骤详细代码

由于AJAX是一项从客户端发起,和服务器进行交互的技术,所以必须涉及两个方面:客户端和服务器端,下面咱们以会员注册的用户名为例给大家写一个AJAX的详细请求步骤和代码:

客户端代码 reg.html

<!DOCTYPE html><html><head><meta charset="utf-8"/><title>AJAX引擎实现用户名重名检测</title></head><body><form><p>用户名:<input type="text" name="username" id="username"/> <span id="result"></span></p><p>密码:<input type="password" name="pwd1"/></p><p>确认密码:<input type="password" name="pwd2"/></p><p><input type="button" value="立即注册"/></p></form><script type="text/javascript">var username=document.getElementById('username');//用户名输入框失去焦点时触发username.onblur=function(){//主角登场――AJAX引擎的创建及使用详细代码来了var ajax=new XMLHttpRequest(); //创建AJAX引擎实例//创建GET请求,发送请求时传username值ajax.open('GET','check.php?username='+this.value);//当AJAX引擎的状态产生改变时触发onreadystatechange属性指向的函数(多次执行)//状态值有5个:0 1 2 3 4 ,其中4表示服务器端响应就绪ajax.onreadystatechange=function(){//必须在服务器响应就绪,并且HTTP的状态码是200时才接收数据//ajax.readyState 获取到服务器响应状态码,必须是4才表示就绪//ajax.status 获取到HTTP的状态码,必须是200才表示成功if(ajax.readyState==4 && ajax.status==200){//ajax.responseText 接收服务器响应回来的内容//console.log(ajax.responseText);//接收到服务器响应数据后,AJAX工作已完成,可根据结果显示提示信息If(ajax.responseText=='1'){result.innerHTML='该用户名太受欢迎,请重新选择';result.style.color='#f00'; //将字体设置为红色}else{result.innerHTML='恭喜你,可以注册';result.style.color='#0a0'; //将字体设置为绿色}}}ajax.send(); //发送请求}</script></body></html>

服务器端代码 check.php

//服务器端的代码可以使用PHP编写,根据逻辑反馈数据给客户端实现验证功能$username=$_GET['username'];//连接数据库的代码省略$sql="select id from users where username='$username'";$rs=mysqli_query($link,$sql); //将构造好的SQL语句发到服务器上执行if( mysqli_num_rows($rs) ){echo '1'; //如果用户名找到有结果,证明该用户名已存在,返回1}else{echo '0'; //如果用户名未找到结果,证明该用户名不存在,返回0}//关闭数据库连接,释放结果集

==附:AJAX的方法和属性表==

方法:

属性:

最后,注意一个重要的问题,XMLHttpRequest对象是没有跨域能力的,也就是说 ajax不能请求获得其它网站的数据,那有没有解决办法呢? 答案是肯定的,需要使用JSONP

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


  • 上一条:
    Ajax实现表格中信息不刷新页面进行更新数据
    下一条:
    JavaScript正则表达式校验非零的负整数实例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • nginx + vue配置实现同域名下不同路径访问不同项目(0个评论)
    • 在js中使用URL类用来解析处理URL的示例代码(0个评论)
    • js中动画事件:requestAnimationFrame、transitionend、animation...(0个评论)
    • 在js中mouseover和 mouseenter的区别浅析(0个评论)
    • uniapp调用手机实现打电话录音功能示例代码(0个评论)
    • 近期文章
    • windows系统中安装FFMpeg及在phpstudy环境php7.3 + php-ffmpeg扩展的使用流程步骤(0个评论)
    • 在go语言中对浮点的数组、切片(slice)进行正向排序和反向排序(0个评论)
    • 在go语言中对整数数组、切片(slice)进行排序和反向排序(0个评论)
    • 在go语言中对字符串数组、切片(slice)进行排序和反向排序(0个评论)
    • 最新国内免注册ChatGPT体验站_ChatGPT镜像站访问链接地址2023/3/28持续更新(0个评论)
    • 在Laravel项目中的实现无密码认证之:发送邮箱链接授权(0个评论)
    • 在go语言中使用GoRoutines实现高性能并发批量调用api示例(0个评论)
    • Docker撤回受争议的收费方案,又可以继续使用docker了(0个评论)
    • 在go语言生成唯一ID之SnowFlake算法(0个评论)
    • ChatGPT再出新功能,推出插件功能,能联网、搜索了(0个评论)
    • 近期评论
    • 博主 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 @ xiaoB 你只管努力,剩下的叫给天意;天若有情天亦老,..
    • xiaoB 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 会不会春节放假后又阳一次?..
    • BUG4 在

      你翻墙过吗?国内使用vpn翻墙可能会被网警抓,你需了解的事中评论 不是吧?..
    • 博主 在

      go语言+beego框架中获取get,post请求的所有参数中评论 @ t1  直接在router.go文件中配就ok..
    • Jade 在

      如何在MySQL查询中获得当月记录中评论 Dear zongscan.com team, We can skyroc..
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-03
    • 2018-04
    • 2018-05
    • 2018-06
    • 2018-09
    • 2018-11
    • 2018-12
    • 2019-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-04
    • 2021-05
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客