ajax同步、异步执行简单理解与证明

此理解范例代码来自前几篇随笔!

首先我们来先了解下AJAX:

Ajax:全称“Asynchronous Javascript and XML”(异步Javascript和XML),他是由Javascript+CSS+DOM+XMLHttpRequest的四种技术的结合,并且JS是Ajax的核心。jQuery将Ajax的实现变得更加轻松容易。Ajax就是我们常说的局部刷新!

 

重在实际操作练习一下!!!!!

在$.ajax()中我们可以常常看到async,这就是来指定ajax同步异步的,需要记忆一下:

记忆方法:

  sync英语中的意思是:“同步”、“同步的”、“同步处理”

  前面加个“a”,构成async英文中的意思是:“异步”

  再者给他指定true和false那就容易理解了:

    1.     “async:true” 意思是:“异步”
    2.     “async:false” 意思是:“同步”

 分析async作用:

当“async:true”时,也就是异步执行ajax,所以不管ajax数据是否已经加载完成,ajax后面的语句都要执行!

当“async:false”时,也就是同步执行ajax,这是指必须等ajax数据加载完成,才可以执行ajax后面的语句!

注意:这里的ajax数据加载是指“$.ajax( 数据传输代码 );”部分!

 

证明方法及说明:

我们可以利用javascript中的“alert();”来证明,大家都知道,当alert弹出一个警告框的话,不点击确定就不会运行接下来的程序,所以我们可以在“$.ajax();”后面写个alert,再在“$.ajax();”里的success回调函数中写一个alert。设置async的值来看看两个alert的执行情况就可以证明出来同步还是异步了!我们来试试...

 

下面举例代码说明:

  同步证明(async:false):

Model: 

public class Model
    {
        public string rtoNumber { set; get; }
        public string approver { set; get; }
        public string modifier { set; get; }
        public string comment { set; get; }
    }
View Code

View:

<div id="container">
        <table id="table">
            <tr>
                <td><label>RTONumber</label><input name="rtoNumber" /></td>
                <td><label>Approver</label><input name="approver" /></td>
                <td><label>Modifier</label><input name="modifier" /></td>
                <td><label>Comment</label><textarea name="comment" cols="30" rows="4"></textarea></td>
            </tr>
        </table>
        <input id="submit" type="button" value="submit"/>
</div>
View Code
<script type="text/javascript">
        $(function () {
            $('#submit').click(function () {
                var model = [];

                var RTONumber = $("input[name=rtoNumber]").val();
                var Approver = $("input[name=approver]").val();
                var Modifier = $("input[name=modifier]").val();
                var Comment = $("textarea[name=comment]").val();

                model.push({ rtoNumber: RTONumber, approver: Approver, modifier: Modifier, comment: Comment });
            });
            $.ajax({
                url: '/TransportModelData/getModelInfo',
                data: JSON.stringify(model),
                type: 'POST',
                contentType: 'application/json;charset=utf-8',
                async: false,
                success: function (data) {
                    //window.location.href = "/RequestStatus/RequestDetail?requestID=" + data.RequestID;
                    alert("Postting data is over!");
                }
            });
            alert("loading data is over!")
        });
</script>
View Code

Controller:

public class TransportModelDataController : Controller
    {
        //
        // GET: /TransportModelData/

        public ActionResult Index()
        {
            return View();
        }
        public ActionResult getModelInfo(List<Model> model)
        {
            string rtoNumber = model[0].rtoNumber;
            string modifier = model[0].modifier;
            string comment = model[0].comment;
            string approver = model[0].approver;

            return Content("");
        }

    }
View Code

执行结果截图:这里我们可以看到只执行了“$.ajax();”中的alert,并没有执行他后面的alert

  

 

  异步证明(async:true):

Model:

public class Model
    {
        public string rtoNumber { set; get; }
        public string approver { set; get; }
        public string modifier { set; get; }
        public string comment { set; get; }
    }
View Code

View:

<div id="container">
        <table id="table">
            <tr>
                <td><label>RTONumber</label><input name="rtoNumber" /></td>
                <td><label>Approver</label><input name="approver" /></td>
                <td><label>Modifier</label><input name="modifier" /></td>
                <td><label>Comment</label><textarea name="comment" cols="30" rows="4"></textarea></td>
            </tr>
        </table>
        <input id="submit" type="button" value="submit"/>
</div>
View Code
<script type="text/javascript">
        $(function () {
            $('#submit').click(function () {
                var model = [];

                var RTONumber = $("input[name=rtoNumber]").val();
                var Approver = $("input[name=approver]").val();
                var Modifier = $("input[name=modifier]").val();
                var Comment = $("textarea[name=comment]").val();

                model.push({ rtoNumber: RTONumber, approver: Approver, modifier: Modifier, comment: Comment });
            });
            $.ajax({
                url: '/TransportModelData/getModelInfo',
                data: JSON.stringify(model),
                type: 'POST',
                contentType: 'application/json;charset=utf-8',
                async: true,
                success: function (data) {
                    //window.location.href = "/RequestStatus/RequestDetail?requestID=" + data.RequestID;
                    alert("Postting data is over!");
                }
            });
            alert("loading data is over!")
        });
</script>
View Code

Controller:

public class TransportModelDataController : Controller
    {
        //
        // GET: /TransportModelData/

        public ActionResult Index()
        {
            return View();
        }
        public ActionResult getModelInfo(List<Model> model)
        {
            string rtoNumber = model[0].rtoNumber;
            string modifier = model[0].modifier;
            string comment = model[0].comment;
            string approver = model[0].approver;

            return Content("");
        }

    }
View Code

执行结果截图:这里我们可以看到两个alert都执行了,不过由于“$.ajax();”中的alert受数据加载延迟了一会时间,所以他执行的比“$.ajax();”后面的alert稍微晚一点,这就证明了异步

注意:同步和异步中的代码是相同的,唯一不同点就是View中“async”的值不同,分别为“false”、“true”!

 

说明不好的话望谅解,希望大家可以理解~~

更多知识分享:微笑空间站

 

转载于:https://www.cnblogs.com/xuyongsky1234/p/4135703.html

使用jQuery发送同步请求 然而,在某些情况下,我们可能需要发送同步请求,以确保在继续执行代码之前,获取到了请求的结果。虽然在现代Web开发中,同步请求并不被推荐使用,但有时候仍然会遇到需要同步请求的情况。虽然同步请求在现代Web开发中不被推荐使用,但了解如何发送同步请求对于理解异步请求的工作原理和处理特定情况下的需求仍然是有益的。需要注意的是,使用同步请求会导致浏览器在请求处理过程中被阻塞,直到请求完成。,我们将请求设置为同步模式。这意味着在发送请求并等待响应返回之前,代码会阻塞在这个请求上,不会继续执行后续的操作。 阅读详情

相关推荐

谷歌浏览器插件—— Ajax Interceptor

一个用于修改 ajax 请求响应的 chrome 扩展,修改ajax请求数据

Ajax Modifier 插件,修改任何页面上的ajax响应

使用浏览器插件修改ajax请求返回数据,实现浏览器端调试,方便前端测试各种reponse返回页面显示效果。4. 刷新页面,重新打开开发者工具,ajax请求数据就会返回设置的内容。1. 添加浏览器插件Ajax Modifier。3. 点设置然后submit。2. 打开插件添加配置。

qq_35487438的博客 6127

chrome扩展插件获取ajax请求记录

chrome扩展插件获取ajax请求记录

jquery ajax属性async(同步异步)

在jquery的ajax中如果我们希望实现同步或者异步我们可以直接设置async发生为真或假即可true false,下面举几个jquery ajax同步和异步实例 一.什么是同步请求:(false)        同步请求即是当前发出请求后,浏览器什么都不能做,必须得等到请求完成返回数据之后,才会执行后续的代码,相当于是排队,前一个人办理完自己的事务,下一个人才能接着办。也就是说,当JS代码加...

郝云博客 9257

DeepSeek 框架和技术栈分析

DeepSeek 诞生于对更高效、更强大的深度学习计算和模型训练的追求。随着深度学习模型的规模不断增大,如大型语言模型(LLMs)和复杂的视觉模型,传统的框架在处理这些大规模模型时面临着性能瓶颈和资源利用效率低下的问题。DeepSeek 旨在解决这些问题,通过优化框架设计和采用先进的技术栈,实现更高效的模型训练和推理,同时降低计算成本。

yournameplease的专栏 1512

华为昇腾910B3显卡实战:手把手教你部署DeepSeek 32B模型(含Bge-zh向量库配置)

本文详细介绍了在配备8张华为昇腾910B3显卡的服务器上,从零部署DeepSeek 32B大模型推理服务的完整实战方案。内容涵盖环境准备、模型配置、多卡负载分配,并集成了BGE中文向量模型与ChromaDB向量数据库,最终通过Open WebUI构建了可投入生产的企业级AI应用栈,为私有化大模型部署提供了具体参考。

weixin_29038345的博客 1709

面试官:react中的setState()是同步还是异步?如何证明?

面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。前端面试题汇总JavaScript性能linux前端资料汇总。

m0_61408947的博客 1326

VMware vSphere运维管理手册

ESXi 7.0 引入了一种系统存储布局,可对大型模块和第三方组件进行灵活的分区管理和支持,同时简化了调试操作。ESXi 7.0 系统存储更改在 ESXi 7.0 之前,分区大小固定不变,除 /scratch 分区和可选 VMFS 数据存储之外,且分区号是静态的,这些限制了分区管理。在 ESXi 7.0 中,分区整合为更少且更大的可扩展分区,具体取决于所使用的引导介质及其容量。ESXi 7.0 系统存储布局包含四个分区:分区适用情况类型系统引导存储引导加载程序和 EFI 模块。FAT16。

Avenjan优快云博客 3623

浅谈异步与同步

首先我们要理解什么是同步和异步同步:就是顺序执行的代码,调用这段代码我能直接获取到结果的就是同步异步:就是稍后执行的代码,调用这段代码我可能没办法立即获取执行结果,需要通过别的操作才可以得到结果但是JavaScript是以单线程的方式运行的,也就是同一时间只能进行一件事,试想一下,假如javascript是多线程的,如果线程1要删除一个DOM元素,节点2要让DOM元素运动起来并且显示,那么浏览器怎...

Mccree1997的博客 505

k8s 查看cpu使用率最高的pod

在 Kubernetes 中,可以使用命令查看 Pod 的资源使用情况,从而找到 CPU 使用率最高的 Pod。

u010674101的专栏 3345

[ESP32S3N16R8][LVGL8.3.0][IDF5.2.3]ST7701S RGB屏幕驱动[vscode最详细配置]

ST7701S ESP32S3 基于ESP-IDF5.2.3编写,编程环境为vscode。本教程详细讲述了esp32s3配置st7701s屏幕驱动以及gt911触摸驱动并关联到lvgl8.3.0,使用IDF5.23示例rgb_panel进行测试删除了其里面的屏幕驱动,改为单独编写屏幕和触摸驱动,最后完成了实列。

qq_44022379的博客 2605

AJAX中的同步与异步编程运行机制

AJAX(AsynchronousJavascriptAndXML):异步的JS和XML 前言:Ajax 是一种创建交互式网页的开发技术,在无需重新加载整个网页的情况下,能够对网页进行“局部更新”。以前传统的网页开发,因为没有AJAX技术,如果需要更新内容,必须重载整个页面,那将造成很大资源开销,影响用户体验。现代的web开发,AJAX已经是每个前端开发工程师必须掌握的技能。而在AJAX的...

weixin_44093239的博客 467

YOLOv8 架构改造实战:添加 P2 小目标检测头与 P6 超大目标检测头

上采样是指将特征图的空间尺寸变大(例如从 20×20 → 80×80),用来提升图像的分辨率。常见于解码器结构或特征融合中。下采样是指将特征图的空间尺寸缩小(例如从 256×256 → 128×128),通常用于减少计算量、提取更高级语义特征。操作目的方法尺寸变化上采样放大特征图插值算法变大(如2×)下采样压缩特征图、提取语义stride卷积等变小(如1/2)

FJN110的博客 575

jquery中同步异步的区别与联系

ajax同步、异步执行简单理解与证明 此理解范例代码来自前几篇随笔! 首先我们来先了解下AJAX: Ajax:全称“Asynchronous Javascript and XML”(异步Javascript和XML),他是由Javascript+CSS+DOM+XMLHttpRequest的四种技术的结合,并且JS是Ajax的核心。jQuery将Ajax的实现变得更加轻松容易

qq_33358062的博客 880

CAD二次开发c# .net加载cui\cuix菜单文件

public static void LoadMyCui(string cuiFile) { Document doc = Application.DocumentManager.MdiActiveDocument; object oldCmdEcho = Application.GetSystemVariable("CMDECHO"); object oldFileDia = Application.GetSys..

2127

深入剖析RK3588系统休眠唤醒机制及驱动适配秘籍

本文深入探讨了RK3588嵌入式系统的休眠唤醒机制及驱动适配技术。首先分析了系统支持的两种休眠模式(Freeze浅度睡眠和Mem深度睡眠)及四种唤醒方式(GPIO中断、蓝牙事件、外设活动和定时器唤醒)的工作原理。重点介绍了驱动适配的三个关键环节:设备树配置要点、驱动代码实现与优化方法,以及驱动与内核电源管理的协同机制。通过GPIO按键唤醒和蓝牙唤醒两个实际案例,展示了具体实现过程并提供了常见问题的解决方案。文章为开发者提供了全面的技术参考,有助于优化系统功耗管理和响应性能,对嵌入式系统开发具有重要指导意义。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 433

php 表单 同步,Jquery点击按钮 异步和同步提交表单

最近在开发一个jsp学生信息管理系统,由于刚刚接触jsp,遇到问题比较多,特此记录与大家分享。Jquery ajax提交表单到servlet示例前台部分代码:姓名学号ajax提交表单代码://增加学生,异步提交学生表单$("#addStudents").click(function() {$.ajax({url: "addStudents.do",//要请求的服务器url//这是一个对象,...

weixin_32336149的博客 169

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

同步 vs 异步:5分钟搞懂核心区别(附生活案例)

理解“同步”和“异步”的关键,就是看“做事情要不要等结果” 以及 “能不能同时做多件事。

qq_45438032的博客 1784

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

你好,JavaScript异步编程---- 理解JavaScript异步的美妙

潜心修炼一段时间的我又回来了 每天不能不写业务,但也不能只写业务。所以选择了一个自己还在学校期间没有学明白的内容进行了巩固,同步异步问题。学习一个知识之前必先给自己一个问题三连。为什么要有这个? 这个...

lumot的博客 573

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

18、Ajax的理解和使用

1、原生Ajax 1.1、Ajax简介 (1)Ajax全称为 Asynchronous javascript and xml,就是异步的 js 和 xml (2)通过Ajax可以在浏览器中发送异步请求,最大优势:浏览器无刷新获取数据 (3)Ajax不是新的编程语言,而是一种将现有的标准语言组合在一起使用的新方式 1.2、XML简介 (1)可扩展标记语言 (2)被设计用来传输数据和存储数据 (3)XML和HTML类似,不同的是HTML都是预定义标签,而XML中没有预定义标签,都是自定义标签 //比如我有一个学

伦伦的博客 2万+

Element-UI组件中Form表单resetFields()重置方法踩过的坑以及Vue中Axios同步异步请求踩过的坑,分享给大家!

关于Form表单中restFields()方法的官方解释 restFields()方法说明:对整个表单进行重置,将所有字段值重置为初始值并移除校验结果。 根据字面意思理解,调用这个方法会将表单所填写的数据重置为初始值并且移除表单校验的结果。 我最开始所理解的“初始化数据”是指的实例化Vue时在data中所声明的数据。如下图所示: 也就是说,调用restFields()会将数据充值为这里所声明的初...

Dream_xiaojin的博客 1万+

关于修改DOM是异步还是同步的问题

回 @bf 同学 本篇文章不是笔记也不是心得,而是关于一个问题的讨论,问题最初出现于https://segmentfault.com/q/1010000005630545?_ea=903562 由于 @bf 同学不方便加QQ/微信,而这个问题又比较大,在问答评论里不好描述清楚,so,趁着周末专门写了一篇文章来回应 @bf 同学 @b...

weixin_33842328的博客 1635

JavaScript的单线程和异步

本文只是讲解单线程和异步的一些基本知识,使用setTimeOut来讲解异步,不包括promise,generator,async等异步的进阶内容。

雪野Solye的博客 429

对于JS异步操作的个人理解

看了一下其它文章,对于异步函数什么时候执行都没有解释得很清楚,导致我也很困惑以最简单的setTimeout为例},5000);结果是1--3--(5秒后)--2把延时时间改为0},0);结果依然是1--3--2原因是当JS执行代码的线程遇到setTimeout函数的时候,会执行异步操作,回调函数会被放入任务队列,然后紧接着就输出3,五秒后输出2,问题是计时是什么时候开始的?不可能是当前线程因为线程只能做一件事,难道是主程序运行完才开始计时?

m0_74114657的博客 148
上一篇: ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
下一篇: 单例模式 随记
anan4621
博客等级 码龄10年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值