AJAX学习笔记

Ajax是 Asynchronous JavaScript And XML    异步的JavaScript 和 XML。

Posted in Javascript onMay 18, 2021

概念

AJAX学习笔记

异步和同步:客户端和服务器端相互通信的基础上。

  • 客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。
  • 客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作。

Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。提升用户的体验。

原生Ajax

//1.创建核心对象
var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
} else {// code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

//2. 建立连接
/*
    参数:
        1. 请求方式:GET、POST
            * get方式,请求参数在URL后边拼接。send方法为空参
            * post方式,请求参数在send方法中定义
        2. 请求的URL:
        3. 同步或异步请求:true(异步)或 false(同步)

 */
xmlhttp.open("GET", "ajaxServlet?username=tom", true);

//3.发送请求
xmlhttp.send();

//4.接受并处理来自服务器的响应结果
//获取方式 :xmlhttp.responseText
//什么时候获取?当服务器响应成功后再获取

//当xmlhttp对象的就绪状态改变时,触发事件onreadystatechange。
xmlhttp.onreadystatechange = function () {
    //判断readyState就绪状态是否为4,判断status响应状态码是否为200
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        //获取服务器的响应结果
        var responseText = xmlhttp.responseText;
        alert(responseText);
    }
}

jQuery实现

基本语法如下,有三种方式:

  • $.ajax({键值对})
  • $.get()
  • $.post()

$.ajax()

语法格式如下:

$.ajax({
    url: "请求路径",
    type: "请求方式GET或POST",
    data: "GET请求参数或POST请求参数",
    dataType: "响应数据的格式"
    success: function (data) {
    	// 响应成功后的回调函数,data是响应回来的数据
    },
    error: function () {
        // 响应出现错误时会执行的回调函数
    }
});

示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <input type="button" value="使用get发送异步请求" onclick="sendAjaxByGet()">
    <input type="button" value="使用post发送异步请求" onclick="sendAjaxByPost()">
</div>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
    function sendAjaxByGet() {
        $.ajax({
            url:"ajaxServlet1", // 请求路径
            type:"GET", // 请求方式
            data:"username=zhangsan", // 请求参数
            dataType:"json", // 设置接受到的响应数据的格式,如果是json格式则设置为json
            success:function (data) { // 响应成功后的回调函数
                alert(data.msg);
            },
            error:function () { // 响应出现错误时会执行的回调参数
                alert("出错了...");
            }
        })
    }

    function sendAjaxByPost() {
        $.ajax({
            url:"ajaxServlet1", // 请求路径
            type:"POST", // 请求方式
            data:{"username":"zhangsan"}, // 请求参数
            dataType:"json", // 设置接受到的响应数据的格式,如果是json格式则设置为json
            success:function (data) { // 响应成功后的回调函数
                alert(data.msg);
            },
            error:function () { // 响应出现错误时会执行的回调参数
                alert("出错了...");
            }
        })
    }
</script>
</body>
</html>

 

$.get()

基本语法如下:

$.get(url, [data], [callback], [type])
// 参数说明
//  url:指的是请求路径
//  data:请求参数
//  callback:回调函数
//  type:响应数据的类型,如json

示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <input type="button" value="使用get发送异步请求" onclick="sendAjaxByGet()">
</div>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
    function sendAjaxByGet() {
        /*
            * 语法:$.get(url, [data], [callback], [type])
				* 参数:
					* url:请求路径
					* data:请求参数
					* callback:回调函数
					* type:响应结果的类型
         */
        $.get("ajaxServlet1", {username: "zhangsan"}, function (data) {
            alert(data.msg);
        }, "json")
    }
</script>
</body>
</html>

$.post()

基本语法如下:

$.post(url, [data], [callback], [type])
// 参数说明
//  url:指的是请求路径
//  data:指的是请求参数
//  callback:指的是响应成功后的回调函数
//  type:指的是响应数据的格式类型

示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <input type="button" value="使用post发送异步请求" onclick="sendAjaxByPost()">
</div>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
    function sendAjaxByPost() {
        /*
            * 语法:$.post(url, [data], [callback], [type])
				* 参数:
					* url:请求路径
					* data:请求参数
					* callback:回调函数
					* type:响应结果的类型
         */
        $.post("ajaxServlet1", {username: "zhangsan"}, function (data) {
            alert(data.msg);
        }, "json")
    }
</script>
</body>
</html>

注意,本例用到的后端代码是Java的Servlet,其中AjaxServlet1.java如下:

@WebServlet("/ajaxServlet1")
public class AjaxServlet1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        System.out.println(username);
        String json_str = "{\"msg\":\"ajax response success!\"}";
        response.getWriter().print(json_str);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

本节源代码地址:GitHub的Demo

Javascript 相关文章推荐
JS 动态加载脚本的4种方法
May 05 Javascript
JS 分号引起的一段调试问题
Jun 18 Javascript
js过滤HTML标签以及空格的思路及代码
May 24 Javascript
javascript继承的六大模式小结
Apr 13 Javascript
js完美解决IE6不支持position:fixed的bug
Apr 24 Javascript
jQuery实现碰到边缘反弹的动画效果
Feb 24 jQuery
vue2.0模拟锚点的实例
Mar 14 Javascript
vue移动端实现红包雨效果
Jun 23 Javascript
Angularjs实现页面模板清除的方法
Jul 20 Javascript
vue实现自定义日期组件功能的实例代码
Nov 06 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
May 27 Javascript
Layui table field初始化加载时进行隐藏的方法
Sep 19 Javascript
JS如何使用剪贴板操作Clipboard API
详解Node.js如何处理ES6模块
May 15 #Javascript
详解vue中v-for的key唯一性
解读Vue组件注册方式
May 15 #Vue.js
如何理解Vue简单状态管理之store模式
May 15 #Vue.js
Vue如何实现组件间通信
May 15 #Vue.js
详解Vue的sync修饰符
May 15 #Vue.js
You might like
基于php下载文件的详解
2013/06/02 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
PHP处理bmp格式图片的方法分析
2017/07/04 PHP
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
js控制淡入淡出示例代码
2013/11/12 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
JsRender for object语法简介
2014/10/31 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
nodejs连接mongodb数据库实现增删改查
2016/12/01 NodeJs
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
小程序云开发之用户注册登录
2019/05/18 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
Python实现把回车符\r\n转换成\n
2015/04/23 Python
python数据结构之链表的实例讲解
2017/07/25 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
Django Celery异步任务队列的实现
2019/07/24 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
pycharm 复制代码出现空格的解决方式
2021/01/15 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
高中生毕业自我鉴定
2013/10/10 职场文书
前厅部经理岗位职责范文
2014/02/04 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
Mysql 性能监控及调优
2021/04/06 MySQL