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 相关文章推荐
javascript作用域容易记错的两个地方分析
Jun 22 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
Oct 30 Javascript
前端必备神器 Snap.svg 弹动效果
Nov 10 Javascript
js获得当前系统日期时间的方法
May 06 Javascript
JS实现的相册图片左右滚动完整实例
Nov 23 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
Oct 14 jQuery
JS实现的JSON数组去重算法示例
Apr 11 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
Sep 27 Javascript
layui 对table中的数据进行转义的实例
Sep 12 Javascript
jQuery实现简单弹幕效果
Nov 28 jQuery
vue中使用WX-JSSDK的两种方法(推荐)
Jan 18 Javascript
vue 使用v-for进行循环的实例代码详解
Feb 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解析html的实现代码
2011/08/08 PHP
PHP闭包(Closure)使用详解
2013/05/02 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
用于table内容排序
2006/07/21 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
jQuery事件对象总结
2016/10/17 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
对django中foreignkey的简单使用详解
2019/07/28 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
HTML5实现晶莹剔透的雨滴特效
2014/05/14 HTML / CSS
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
企业车辆管理制度
2014/01/24 职场文书
护理毕业生自我鉴定
2014/02/11 职场文书
师恩难忘教学反思
2014/04/27 职场文书
英文求职信范文
2014/05/23 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
2014年第四季度入党积极分子思想汇报(十八届四中全会)
2014/11/03 职场文书
《改造我们的学习》心得体会
2014/11/07 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
Go各时间字符串使用解析
2021/04/02 Golang