深入了解ajax(图文详解)

发布时间:2024-02-12 点击:138
1.1 什么是ajax:
ajax即“asynchronous javascript and xml”(异步javascript 和xml),是指一种创建交互式网页应用的网页开发技术。ajax=异步javascript和xml(标准通用标记语言的子集)。通过在后台与服务器进行少量数据交换,ajax可以使用网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新(无刷新技术)。传统的网页(不使用ajax)如果需要更新内容,必须重载整个网页页面。
1.2ajax的应用场景:
1.2.1 检查用户名是否已被注册:
很多站点的注册页面都具被自动检测用户名是否存在的友好提示,该功能整体页面并没有刷新,但仍然可以异步与服务器进行数据交换,查询用户输入的用户名是否存在数据库。
1.2.2 省市级联下拉框联动:
很多站点都存在输入用户地址的操作,在完成地址输入时,用户所在的省份是下拉框,当选择不同的省份时会出现不同市区的选择,这就是最常见的省市联动效果。
1.2.3 内容自动补全:
不管时专注于搜索的百度,还是站点内商品搜索的淘宝,都有搜索的功能,在i搜索框输入查询关键字时,整个页面没有刷新,但会根据关键字显示相关查询字条,这个过程是异步的。
百度的搜索补全功能:
淘宝的搜索补全功能:
1.3 同步方式与异步方式的区别:
同步方式发送请求:发送一个请求,需要等待响应返回,然后才能够发送下一个请求,如果该请求没有响应,不能发送下一个请求,客户端会一直处于等待过程中。异步方式发送请求:发送一个请求,不需要等待响应返回,随时可以再发送下一个请求,即不需要等待。
1.4 ajax的原理分析:
ajax引擎会在不刷新浏览器地址栏的情况下,发送异步请求:使用javascript获取浏览器内置的ajax引擎(xmlhttprequest对象)使用js确定请求路径和请求参数ajax引擎对象根据请求路径和请求参数进行发送请求服务器接收到ajax引擎的请求进行处理:服务器获得请求参数数据服务器处理请求业务(调用业务层代码)服务器响应数据给ajax引擎ajax引擎获得服务器响应的数据,通过执行javascript的回调函数将数据更新到浏览器页面的具体位置:通过设置给ajax引擎的回调函数获取服务器响应的数据使用javascript在指定的位置,显示响应的数据,从而局部修改页面的数据,达到局部刷新的目的。
2.1js原生的ajax:
js原生的ajax开发步骤:
创建ajax引擎对象
为ajax引擎对象绑定监听(监听服务器已将数据响应给引擎)
绑定提交地址
发送请求
监听里面处理响应数据
<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>title</title> <style type="text/css"></style> <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script> <script type="text/javascript"> //同步请求点击事件 function sendrequest() { //js刷地址栏请求服务器端 location.href = "ajax1servlet?name=admin&password=123abc"; } //异步请求点击事件 function sendasynrequest() { //1.创建ajax引擎对象 var xmlhttp = new xmlhttprequest(); //2.设置回调函数,目的是处理服务器完全返回的数据 xmlhttp.onreadystatechange = function () { / * 这个回调函数什么调用呢?是ajax引擎对象与服务器通信状态码改变的时候调用 * ajax引擎对象与服务器通信状态码xmlhttp.readystate,范围0~4 * 0:请求未初始化 * 1:服务器连接已建立 * 2:请求已接收 * 3:请求处理中 * 4:请求已完成,且响应已就绪 * 这个回调函数一共被调用4次,但只有状态码4的时候才代表服务器响应完成数据完成。 * ajax引擎通信转态码为4和http通信转态码为200 */ if(xmlhttp.readystate==4 && xmlhttp.status==200){ //获取响应数据 var content = xmlhttp.responsetext; alert(content); } } //3.设置请求路径和请求参数 / * xmlhttp.open(method,url) * method,请求方法,get或post请求 * url:请求路径 */ xmlhttp.open("get","ajax1servlet?name=admin&psw=abc123"); //4.发送请求 xmlhttp.send(); } </script></head><body><input type="button" value="发送同步请求" onclick="sendrequest();"/><input type="button" value="发送异步请求" onclick="sendasynrequest();"/></body></html>package com.sunny.web;import javax.servlet.servletexception;import javax.servlet.annotation.webservlet;import javax.servlet.http.httpservlet;import javax.servlet.http.httpservletrequest;import javax.servlet.http.httpservletresponse;import java.io.ioexception;@webservlet(name = "ajax1servlet", urlpatterns = "/ajax1servlet")public class ajax1servlet extends httpservlet { protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { doget(request, response); } protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { //获取请求参数 string name = request.getparameter("name"); string password = request.getparameter("password"); //打印出来 system.out.println("name=" name)

优质云服务器哪家好
cad如何黑白打印 cad设置黑白打印的方法
云服务器 云主机 区别
.club域名:换个方式 认知世界门户
阿里云服务器的价格怎么计算
域名转出申请需要哪些资料 域名转出要多少钱
阿里云香港服务器域名可以不备案吗
电脑取消开机记录时间的详细方法