原生js实现Ajax实例讲解

article/2025/10/6 6:16:52

Ajax简介

ajax = 异步 JavaScript 和 XML。
ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。我们知道,传统的网页(不使用ajax)如果需要更新内容,必须重新加载整个网页。Ajax的出现,使得使网可以实现异步更新,这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
注意:ajax本身不支持跨域请求,需要在服务器端处理。

工作原理

ajax的技术核心是 XMLHttpRequest 对象。
ajax请求过程:创建XMLHttpRequest、连接服务器、发送请求、服务器做出响应、接收响应数据
图示:这里写图片描述

ajax与jsonp

区别

从实现方式上来讲,ajax是通过创建XMLHttpRequest来获取同源的数据。而jsonp是通过

jsonp产生原因

 1. Ajax直接请求普通文件存在跨域无权限访问的问题(静态页、动态页、web服务、wcf只要是跨域请求一律不准)
 2. web的页面上调用js文件是不受跨域的影响(凡拥有src属性的标签都拥有跨域能力script img iframe)
 3. 可以判断 现在想通过纯web端(ActiveX控件、服务端代理、H5之Websocket等方式不算)跨域访问数据就只有一种可能,就是在远程服务器上设法把数据装进js格式的文件里,供客户度调用和进一步处理;
 4. json的纯字符数格式可以简洁的描述复杂数据还被js原生支持
 5. web客户端通过与调用脚本一样的方式来调用跨域服务器上动态生成的js格式文件(后缀.json),服务器之所以要动态生成json文件目的把客户端需要的数据装入进去
 6. 客户端在对json文件调用成功后获得自己所需的数据剩下的就按照自己需求进行处理和展现,这种获取远程数据的方式非常像ajax其实并一样
 7. 为了方便客户端使用数据逐渐形成非正式传输协议jsonp

其实,说到ajax就会面临两个不可避免的问题,一是以何种格式来减缓数据;二是如何解决跨域问题。目前来说,所被推崇的方案是JSON作数据交换,JSONP来解决跨域问题。

JSON与JSONP虽然看上去只有一字之差,但是实际上根本不是一回事。JSON是一种key/value形式的数据格式,二JSONP则是一种跨域数据交互协议。

实例

题目:注册时,会要求输入用户名和密码,同时要验证用户名是否合法。
实现功能,用户在输入用户名后,需要给出提醒该名称是否已经存在。
这里写图片描述

html文档结构

<!DOCTYPE HTML>
<html>
<head><meta charset="utf-8"><title>Ajax实例详解</title>
</head>
<body><div class="reg" style="margin-top: 50px;margin-left:100px;"><p>注册页(ajax检测用户名是否合法)</p><form name="Form">用户名: <input type="text" name="Name" onblur="check()"><span id="myDiv"></span><br>密 码: <input type="text" name="Password"><br><input type="button" value=" 提交" name="Btn" disabled="false"></form></div>
</body>
</html>

JavaScript代码

<script type="text/javascript">//初始化一个存储XMLHttpRequest对象的变量var xhr = null;//定义一个函数用来创建XMLHttpRequest对象,兼容各个版本function CreatXHR(){//判断浏览器是否支持ActiveX控件,针对IE6及之前版本if (window.ActiveXObject){//将所有可能出现的ActiveXObject版本都放在一个数组中var arrXHR = ['Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];//通过循环创建XMLHttpRequest对象var temp = arrXHR.length;for (var i=0;i<temp;i++){try{//创建XMLHttpRequest对象xhr = new ActiveXObject(arrXHR[i]);//如果创建XMLHttpRequest对象成功,则跳出循环break;}catch(ex){}}}//判断浏览器是否将XMLHttpRequest作为本地对象实现,针对IE7,Firefox,Opera等浏览器else if(window.XMLHttpRequest){xhr = new XMLHttpRequest();}}//响应XMLHttpRequest对象状态变化的函数function httpStateChange(){if (xhr.readyState==4)//异步调用完毕{if (xhr.status==200 || xhr.status==0)//异步调用成功,在本机上调试{//获得服务器返回的数据var Names = xhr.responseText;var arrName = Names.split(";");//把获取到的一个字符串分割成字符串数组。//定义一个变量,用于判断用户名是否已经存在var Flag = false;for(i=0;i<arrName.length;i++){if (arrName[i]== Form.Name.value){Flag = true;//用户名存在break;}}//合法性验证提醒var OWarn = document.getElementById("Warn");if (Flag){OWarn.innerHTML = "您输入的用户名已存在,请重新输入!";Form.Btn.disabled = true;//提交按钮不可用}else{OWarn.innerHTML = "合法用户名";Form.Btn.disabled = false;//提交按钮可用}}}}//校验用户名是否有效function check(){//创建XMLHttpRequest对象,调用前面定义好的函数CreatXHR();if (xhr!=null){//创建响应XMLHttpRequest对象状态变化的函数xhr.onreadystatechange = httpStateChange;//创建http请求xhr.open("get","Readme.txt", true);//发送http请求xhr.send(null);}else{alert("您的浏览器不支持XMLHTTP");}}
</script>

注意

注意:需要在html同级目录下创建一个Reademe.text文件来存储已经存在的用户名,多个用户名之间用分好隔开。
这里写图片描述

效果图

这里写图片描述
这里写图片描述

原文:http://www.upyang.com/2017/07/12/ajax/


http://chatgpt.dhexx.cn/article/rqsmWf7R.shtml

相关文章

jsp ajax实例讲解

下面介绍JSP前台表单内容通过Ajax异步提交到后台Servlet进行校验&#xff08;校验方式多种&#xff0c;包括提取数据库信息&#xff0c;校验用户名是否重复等&#xff09;&#xff0c;异步在JSP表单页面显示校验结果信息的基本过程。 一、说明&#xff1a; 1.由于本…

jqueryajax实例

运用ajax结合dom写的小实例&#xff0c;其中记录了过程中遇到的问题和解决方法 任务要求&#xff1a; 模拟“请求用户列表”&#xff0c;向后台请求&#xff0c;后台会去数据库中将你的用户列表全部查出来&#xff0c;返回很多条记录&#xff0c;现在将记录显示在页面上用表格打…

Ajax简介和实例

目录 什么是 AJAX &#xff1f; AJAX实例 ajax-get无参 ajax-get有参 对象和查询字符串的互转 ajax-post ajax-post 表单 AJAX 是一种在无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术。 什么是 AJAX &#xff1f; 菜鸟教程是这样介绍的&#xff1a…

Ajax实例讲解与技术原理

林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka 摘要&#xff1a;AJAX即“Asynchronous Javascript And XML”&#xff08;异步JavaScript和XML&#xff09;&#xff0c;是指一种创建交互式网页应用的网页开发技术。AJAX 是一种用于创建快速动态网页的…

jQuery的Ajax实例(附完整代码)

目录 写在前边什么是AjaxAjax基本结构实例实例1实例2 小结 写在前边 作为一个前端刚入门没多久的小白&#xff0c;想在这里分享一下我的学习内容&#xff0c;就算是学习笔记了。因为前端的大部分学习都是通过网站上的教程&#xff0c;所以遇到不懂得问题&#xff0c;也只有求助…

Ajax技术 实例篇

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 例如&#xff1a;本篇文章通过HtmlAjaxnode技术实现一个简单的Ajax请求案例&#xff0c;为加强对Ajax技术的了解和实操经验 实现效果 这是请求前的前端页面&#xff0c;点击两个Button按钮分别发起不…

Ajax-Ajax基础实例

实例一&#xff1a;点击一个按钮&#xff0c;然后将信息显示到指定的div内。 1、创建一个JAVA web工程&#xff0c;命名为AjaxTest。在webRoot创建一个HTML页面&#xff0c;命名为FirstTest.html&#xff0c;FirstTest.html代码如下&#xff1a; <html><head><t…

Ajax最实用的小例子集合

今天我为大家带来了几个非常实用的ajax小例子&#xff0c;都是在工程中经常用到的实用的例子。适合有基础的同学&#xff0c;废话也不多说了&#xff0c;看代码 哦&#xff0c;对了&#xff0c;所有的例子都是用servletjsp实现的 至于三大框架的&#xff0c;我相信&#xff0c;…

Java 网络编程(大全)

前言必读 读者手册&#xff08;必读&#xff09;_云边的快乐猫的博客-CSDN博客 一、1网络通信的基本模式分为两种 1.CS模式&#xff08;Client---客户端&#xff0c;Server---服务端&#xff09; 客户端是需要程序员去开发的&#xff0c;例如日常使用的各种的APP&#xff0c…

java游戏编程:三路兵线,BOSS走位,代码和视频

一、基本功能&#xff1a; 坦克大战&#xff1a;三路兵线的走&#xff0c;停&#xff0c;走&#xff0c;停。四个版本的飞机大战&#xff1a;多种运动方式。都有代码和视频下载地址。 二、后续改进&#xff1a; 走&#xff0c;停发起攻击&#xff0c;走&#xff0c;停发起攻击…

Java实现石头剪刀布游戏

思路&#xff1a;采取5局3胜制&#xff1b;用两个变量a、b标记&#xff0c;若&#xff0c;第一局电脑胜&#xff0c;则b加1&#xff0c;反之亦然。其中用到int randomNumber new Random().nextInt(4) 随机生成04的一个数&#xff0c;通过生成的数索引数组中的内容&#xff0c;…

Java实现猜数游戏

1 问题 编写一个Java程序&#xff0c;实现以下功能&#xff1a; 2 方法 首先导入java.util包下的Random&#xff0c;让程序随便分配给用户一个数。 再导入java.util包下的Scanner类&#xff0c;构建Scanner对象&#xff0c;以便输入。 利用Random().nextInt()生成一个随机的i…

Java小游戏:飞翔的小鸟 【附源码和素材】

目录 一、项目分析 二、项目展示 1.开始状态 2.运行状态 3.结束状态 三、实现代码 1.游戏启动类 2.地面类 3.小鸟类 4.柱子类 四、代码资源 一、项目分析 创建一个窗口和画板&#xff0c;把画板放到窗口上&#xff0c;在画板上绘画图片 &#xff08;2&#xff09;让小鸟…

Java——猜数字游戏

目录 &#x1f351;前置知识 &#x1f351;题目要求 &#x1f351;代码实现 &#x1f351;测试 &#x1f351;前置知识 既然是猜数字那么就要生成一个随机数 在Java中要生成一个指定范围之内的随机数字有两种方法&#xff1a;一种是调用 Math 类的 random() 方法&…

Java简单实现猜拳游戏

前言 Random类的简单使用 .nextInt()方法&#xff0c;返回伪随机的&#xff0c;均匀分布 int值介于0&#xff08;含&#xff09;和指定值&#xff08;不包括&#xff09;&#xff0c;从该随机数生成器的序列绘制。 public class Demo_02 {//出拳游戏:1表示石头,2表示剪刀,3表…

java实现猜拳游戏

剪刀、石头、布又称“猜丁壳”&#xff0c;古老而简单&#xff0c;这个游戏的主要目的是为了解决争议&#xff0c;因为三者相互制约&#xff0c;因此不论平局几次&#xff0c;总会有胜负的时候。 游戏规则中&#xff0c;石头克剪刀&#xff0c;剪刀克布&#xff0c;布克石头。…

Java游戏编程前篇 修改eclipse背景颜色

最近准备开始研究java游戏设计了。&#xff08;不是安卓的游戏设计&#xff0c;关于安卓的游戏设计&#xff0c;我打算学完java之后直接学cocos2dx&#xff0c;学习java的原因是因为在公司里接触到了eclipse&#xff0c;所以打算顺便将java也啃下来&#xff0c;以后说不定哪天就…

java游戏开发入门(一) - HelloWorld

java游戏开发入门&#xff08;一&#xff09;- HelloWorld 前言开发环境启程 Hello WorldMaven启动类 HelloWorldApp创建一个600 x 600&#xff0c;标题为"Hello world"的窗体main运行效果完整代码 完整项目 前言 开发一款游戏&#xff0c;我相信很多人在学习开发之前…

JAVA编程实现猜数游戏

1.该程序就是随机生成一个1-100的整数让玩家进行游戏&#xff0c;不限次数&#xff0c;直到玩家猜对为止。 2.使用while循环语句实现功能 3.代码展示 import java.util.Random; import java.util.Scanner;public class S11 {public static void main(String[] args) {Random…

Java游戏框架编写

自己抽空编写的一个2D游戏框架(也可以说是工具类集吧)&#xff0c;在此记录一下&#xff0c;开发完了顺便写了一个案例判断框架的可用性 项目地址&#xff1a;https://gitee.com/shaokang123/spring-game-starter 框架特点 支持直接使用Tiled设计地图&#xff0c;以name为beanN…