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

2025-11-12 10:54: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"%>

注册账号(Ajax)

账号(get):



账号(post):



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{

@Override

protected 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"%>

注册账号(Ajax)

账号(get):



账号(post):



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

运行结果:

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

多说一点,json的写法:

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

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

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

三、最简单的写法

jsp代码:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

注册账号(Ajax)

账号(get):



账号(post):



运行结果:

第三种写法实际上就是用$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资源下载服务。

​ ​​

嗨贷怎么样?嗨贷是不是合法的?
女排世界杯第四轮比赛全部结束,各队具体战况如何,++榜排名又发生了哪些变化呢