Ajax的三种写法(最原始的写法+最常用的写法+最简便的写法)

article/2025/8/18 17:50:10

AJAX:Asynchronous JavaScript  AND XML

定义:浏览器向服务器发送的异步请求(不改变页面的情况下,发送的变化)

核心:浏览器向服务器发送异步请求,javascript中提供xmlHttpRequest对象,这个是核心对象,来发送异步请求

最简写法: jQuery

 

书写ajax的步骤:
        1,创建对象:  new  xmlHttpRequest();
        2,初始化参数  open("get/post","url","true")
        3,  发送请求  send(data)
             get/post

xmlHttpRequest存在不同的状态码
        0-----4
        0:创建(new)之后 
        1:连接初始化之后 open之后
        2:发送请求之后
        3,服务器正在处理
        4,当服务器将结果响应到浏览器中

 

直接看例子

我们实现功能:注册账号时,检查账号在数据库中是否存在,并异步刷新出提示信息。(因为只是展示下Ajax,为了简便,直接在Servlet中写死账号为“aaa”,若注册账号为aaa,不能注册,其余情况可以注册)

一、最原始的写法:

jsp代码:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>注册账号(Ajax)</title><script src="js/jquery-3.1.1.min.js" type="text/javascript" charset="utf-8"></script>
</head><body>账号(get):<input type="text" name="username" id="username"/><span id="uinfo"> </span><br/><br/>账号(post):<input type="text" name="username" id="username1"/><span id="uinfo1"> </span><br/><br/><input type="button" value="同步提交" id="button" />	<script type="text/javascript">//同步提交$("#button").click(function(){window.location.href="ajax.do";});//get提交$("#username").blur(function(){//取到文本框里面的值(账号)var username = $("#username").val();//创建异步提交对象var xhr= new XMLHttpRequest();//初始化连接xhr.open("GET","ajax.do?username="+username,true);//发送请求xhr.send(null);//状态的改变事件xhr.onreadystatechange=function(){//处理响应结果if(xhr.readyState==4){//得到响应的结果var result = xhr.responseText;if (result=="0") {//找到id=uinfo---加内容进去$("#uinfo").html("该账号已经存在!")//找到id=uinfo---改掉字体的颜色$("#uinfo").css("color","red");} else{$("#uinfo").html("可以注册!")$("#uinfo").css("color","green");}}}});//post$("#username1").blur(function(){//取到文本框里面的值(账号)var username1=$("#username1").val();//创建异步提交对象var xhr= new XMLHttpRequest();//初始化连接xhr.open("post","ajax.do",true);//post提交,要添加请求头xhr.setRequestHeader("CONTENT-TYPE", "application/x-www-form-urlencoded");//发送请求xhr.send("username="+username1);//状态的改变事件	xhr.onreadystatechange=function(){//处理响应结果if(xhr.readyState==4){//得到响应的结果var result=	xhr.responseText;if (result=="0") {$("#uinfo1").html("该账号已经存在!")$("#uinfo1").css("color","red");} else{$("#uinfo1").html("可以注册!")$("#uinfo1").css("color","green");}}}});</script></body>
</html>

 

java代码:

package com.ajia.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ajax.do")
public class AjaxServlet02  extends HttpServlet{@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username=request.getParameter("username");//响应到页面中去PrintWriter out=response.getWriter();if ("aaa".equals(username)) {out.print(0);}else {out.print(1);}}}

Servlet中,账号存在返回0,否则返回1。jsp中根据返回值进行异步刷新。

jsp中使用的是blur事件,即输入后,用鼠标点击一下该输入框外(输入框失去焦点),信息立即刷新出来。

若是同步提交,则会直接跳转到Servlet的地址;异步提交的话地址不会变。

结果如下:

同步提交:

异步提交:

 

二、最常用的写法

jsp代码:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>注册账号(Ajax)</title><script src="js/jquery-3.1.1.min.js" type="text/javascript" charset="utf-8"></script>
</head><body>账号(get):<input type="text" name="username" id="username"/><span id="uinfo"> </span><br/><br/>账号(post):<input type="text" name="username" id="username1"/><span id="uinfo1"> </span><br/><br/><script type="text/javascript">//get方式$("#username").blur(function(){//取到文本框里面的值(账号)var username = $("#username").val();$.ajax({type: 'GET',url: 'ajax.do?username='+username,success: function(data){if (data=="0") {//找到id=uinfo---加内容进去$("#uinfo").html("该账号已经存在!")//找到id=uinfo---改掉字体的颜色$("#uinfo").css("color","red");} else{$("#uinfo").html("可以注册!")$("#uinfo").css("color","green");}},error: function(msg){alert("提交失败!");}});});//post方式$("#username1").blur(function(){//取到文本框里面的值(账号)var username = $("#username1").val();$.ajax({type: 'POST',url: 'ajax.do',data: {'username':username},dataType:'json',success: function(data){if (data=="0") {//找到id=uinfo---加内容进去$("#uinfo1").html("该账号已经存在!")//找到id=uinfo---改掉字体的颜色$("#uinfo1").css("color","red");} else{$("#uinfo1").html("可以注册!")$("#uinfo1").css("color","green");}},error: function(msg){alert("提交失败!");}});});</script></body>
</html>

java代码不变,还是之前那个。

运行结果:

这样的写法是不是简洁了很多呢,也很直观易懂。

多说一点,json的写法:

{key:value,key:value}    (需要打引号)

可以看到,Ajax方法内就使用的json写法,同时data后面也是用的json。

如果要用到json数组,直接在最外面加中括号[]

 

三、最简单的写法

jsp代码:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>注册账号(Ajax)</title><script src="js/jquery-3.1.1.min.js" type="text/javascript" charset="utf-8"></script>
</head><body>账号(get):<input type="text" name="username" id="username"/><span id="uinfo"> </span><br/><br/>账号(post):<input type="text" name="username" id="username1"/><span id="uinfo1"> </span><br/><br/><script type="text/javascript">//get提交$("#username").blur(function(){//取到文本框里面的值(账号)var username = $("#username").val();$.get("ajax.do?username="+username, function(data) {if (data=="0") {//找到id=uinfo---加内容进去$("#uinfo").html("该账号已经存在!")//找到id=uinfo---改掉字体的颜色$("#uinfo").css("color","red");} else{$("#uinfo").html("可以注册!")$("#uinfo").css("color","green");}});});//post提交$("#username1").blur(function(){//取到文本框里面的值(账号)var username = $("#username1").val();$.post("ajax.do",{'username':username}, function(data) {if (data=="0") {//找到id=uinfo---加内容进去$("#uinfo1").html("该账号已经存在!")//找到id=uinfo---改掉字体的颜色$("#uinfo1").css("color","red");} else{$("#uinfo1").html("可以注册!")$("#uinfo1").css("color","green");}});});</script></body>
</html>

运行结果:

第三种写法实际上就是用$post或者$get,然后直接写入内容。

比较:第二种写法是以键值对方式写入参数,第三种就是直接写参数,语法如下:

jQuery.post(url,data,success(data, textStatus, jqXHR),dataType)

总结:

最后总结一下,我们一般用第二种写法,看起来更直白易懂。

另外,后面两种要记得引入jQuery库哦

在jQuery里,如果不写type,默认均以get方式提交;dataType可以不用写,因为它默认执行智能判断(xml、json、script 或 html)。

还有,我们这里的Servlet写得比较简单,只是用PrintWriter的实例直接向前台输出,前台获取返回值进行处理。后续如果要从数据库读数据并进行处理的话,直接在Servlet中编写相应代码就行,前台需要进行一些处理的话也可以直接在回调函数success()中写入相应代码就行,整个Ajax的大体流程就是这样,非常简单,又十分好用。

 

注:jQuery提供的函数非常好用,但不要忘记Ajax的本源哦,它是使用xmlHttpRequest对象来发送请求的;

       还有,后续可能会遇到跨域问题,jQuery中可以这样解决: dataType:"jsonp"

       但是注意,解决跨域问题的是jsonp,不是Ajax,只是jQuery将其封装到了Ajax里。

 

----------------------------------------

 

欢迎关注公众号“编程江湖”,可以领取Java、Python、微信小程序等诸多学习资料和项目源码,还能查看精品技术文章,并给大家提供了CSDN资源下载服务

​​


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

相关文章

利用油管语音转文字

https://www.tunestotube.com/ 音频上传油管https://zhuwei.me/y2b/ 获取油管字幕文章转载自 https://www.jianshu.com/p/762ae8461243

怎样能把文字变成语音

文字转语音目前在人们的生活和工作中发挥着很大的作用&#xff1b;没事的时候人们总是喜欢看看手机新闻或者玩玩电脑游戏&#xff0c;我们在看新闻的内容时&#xff0c;长时间的盯着屏幕看文字&#xff0c;很快会让眼睛变的疲劳&#xff0c;如果想要让眼睛得到休息又能够获取新…

Java文字转语音功能实现

也许&#xff0c;有些时候&#xff0c;你需要这个需求呢&#xff0c;来上代码 我会写出两种不同方式的文字转语音demo&#xff0c;直接copy走用&#xff0c;节省开发时间 git项目下载地址 1.直接使用jdk的 jacob&#xff0c;效果还不错&#xff0c;特点&#xff1a;免费的 2…

电脑文字转语音怎么弄?这些方法值得一试

有时我们需要在上网搜索一些文献作为参考&#xff0c;但有些资料文字太多&#xff0c;内容枯燥&#xff0c;不是很想阅读。这时我们可以将网页文字转成语音&#xff0c;就不用一直盯着屏幕上的文字&#xff0c;通过“听”的方式&#xff0c;还可以让我们放松下来。那么你知道网…

视频语音识别文字

广告关闭 9.9元享100G流量包&#xff0c;1年有效&#xff0c;低至1元/天&#xff0c;具备美颜动效视频处理等功能&#xff0c;支持定制开发&#xff0c;最快1天接入。 腾讯云语音识别服务开放实时语音识别、一句话识别和录音文件识别三种服务形式&#xff0c;满足不同类型开发…

如何将视频的语音变成文字播放出来?

看到回答中很多人分享的是软件&#xff0c;每次使用都需要下载&#xff0c;给大家分享两款在线端语音转文字工具&#xff0c;不用下载安装&#xff0c;在线登录就能使用&#xff0c;非常方便。 1、网易见外 网易见外是网易团队上线的一款转文本工具&#xff0c;上线了视频转写…

如何才能实现文字转语音播放?只要这三个步骤就能快速搞定!

大家知道吗&#xff1f;配音已经不再是影视制作的专属工作了&#xff0c;如今随着各种短视频平台的热度上涨&#xff0c;许多普通用户也加入到短视频的制作中&#xff0c;市面上也陆续出现许多专门服务于这类人员的配音工具&#xff0c;依托它们&#xff0c;大家无需进行人工配…

手把手教你实现——Python文字(汉字)转语音教程,举一反三~

前言&#xff1a; 这是一篇简单的Python文字&#xff08;汉字&#xff09;转语音教程&#xff0c;当然对于其他语言工具在实现的方法上也是一样的 。 在自然语言处理上&#xff0c;文字、音频互转是一个很关键的技术点。对于语音转文字&#xff0c;个人实现较为困难&#xff…

在线文字转成语音怎么转

很多小伙伴在办公或学习中&#xff0c;经常或需要浏览大量资料。随着时间越来越长&#xff0c;我们的眼睛就会多度疲劳。为了不戴上眼镜&#xff0c;我们只能改变当前的方式&#xff0c;也就是把文字变成语音去听&#xff0c;而不是去看。那么就有小伙伴想问了在线文字转成语音…

做短视频时如何将文字转为语音?分享三个小方法,教你轻松配音

做短视频时如何将文字转为语音&#xff1f;分享三个小方法&#xff0c;教你轻松配音 在做短视频的时候&#xff0c;经常会遇到需要将文字转为语音&#xff0c;为短视频配音的情况。那么&#xff0c;我们可以如何为短视频配音呢&#xff1f;文字转为语音的方法又有哪些呢&#…

小程序实现文字转语音

1、在微信公众平台登录小程序&#xff0c;添加插件微信同声翻译 搜索微信同声翻译点击添加&#xff0c;即可进行开发 代码 index.html <view><button class"showCharacter" bindtap"wordYun">跟我读</button> </view>index.js …

在线文字转语音怎么转

小伙伴们有没有遇到过需要把文字变成语音&#xff0c;要求发声的问题呢&#xff1f;其实在很多领域需要把文字变成语音&#xff0c;比如我们每天接触的短视频领域&#xff0c;尤其是一些影视评论博主使用的评论视频。这给短视频制作人带来了很多便利&#xff0c;节省了配音成本…

微信公众号 语音转文字api_文字一键转语音,无需安装任何软件

点击蓝字关注我们 截止到今天&#xff0c;整整一个月没有出门了。 人都说&#xff0c;越闲越懒、越吃越馋&#xff0c;这话一点不错&#xff0c;早上睡到八九点&#xff0c;起来洗漱一下&#xff0c;吃点早餐&#xff0c;一整个上午就这么溜走了&#xff0c;以至于老妈给我打视…

php文字转语音amr,如何将文字转成语音?这几个方法一分钟搞定!

原标题:如何将文字转成语音?这几个方法一分钟搞定! 文字转语音在我们的生活中已经广泛使用了,早晨起床想要看看新闻,但是又无奈时间不够,这时不必慌张,想要了解新闻事件,我们直接把这些文字转为语音,随时随地有时间就可以播放出来听,一点都不怕耽误做其它的事情。 那…

Android文字转语音播报

文章目录 前言一、实现方式1.Android系统自带TTS2.第三方语音框架&#xff1a;云知声离线语音(32位&#xff1a;armeabi-v7a)、... 二、Android系统自带TTS1.集成工具类TextToSpeechUtils2.初始化和调用3.需要的支持中文语音引擎 三、第三方语音框架&#xff08;云知声离线语音…

C# 文字转语音

不依赖于第三方程序&#xff0c;使用.net自带的System.Speech实现&#xff0c;添加引用至项目即可 实现功能&#xff1a; 将文字转为语音&#xff0c;实现播放、暂停、继续、停止;以及音量和语速调整等功能&#xff0c;并且支持将音频保存到本地 开发环境&#xff1a; 开发工具…

计算机将文本朗读出来应用语音,还有这种操作?一分钟轻松把文字变成语音,手机电脑都可以!...

原标题&#xff1a;还有这种操作&#xff1f;一分钟轻松把文字变成语音&#xff0c;手机电脑都可以&#xff01; 有的时候&#xff0c;我们不想看文字的时候&#xff0c;就想用耳朵来听&#xff0c;所以现在很多人更喜欢听电台听故事。可是我们的文件没有声音啊&#xff0c;怎么…

有什么软件可以把文字变成语音?声音多点更好了

文字转语音用到就是AI智能功能&#xff0c;基于深度的学习技术&#xff0c;给用户提供了流畅、自然的发音服务。很多用户在线使用传统的配音工具时&#xff0c;经常遇到发音机械、选择主播有限、广告众多等各种缺点。选择知意配音的优点实在太多了简直不要套多&#xff0c;海量…

怎么让文字变成语音?如何将文字自动生成语音?

文字转语音怎么弄?如果不想用自己声音做音频&#xff0c;可以使用压缩视频网-文字合成语音https://www.yasuoshipin.com/make功能&#xff0c;简单好操作&#xff0c;语音合成的方法一起来看一下吧。 点击工具栏&#xff0c;文字合成语音功能&#xff0c;编辑文字内容或者将编…

html 文字 转 语音,把文字变成语音的软件

这年头爱看网络小说的人是越来越多了&#xff0c;但是&#xff0c;那密密麻麻的文字让人看着看着就头昏眼花了&#xff0c;额滴神啊&#xff01; 要是能把文字变成语音就好了&#xff01;偷偷告诉大家哦&#xff0c;其实我也是这类人 &#xff0c;所以最近我找到了一款好用的文…