关于ajax的异步同步问题

AJAX试题 AJAX试题一些填空题目 立即下载

关于ajax的异步同步问题


之前一直对于ajax同步和异步不是很理解,直到在实践中遇到问题才明白这是怎么一回事。那么就根据这个实际的问题来说说自己对ajax异步与同步的理解。

问题的起因是这样的,在做一个项目当中有这样一个需求:网站上的一些链接有内外网显示权限,有些链接当用内网访问时可以点开查看,用外网点开弹出提示说:ip限制。然后取消默认的链接跳转行为。

我的解决思路就是给a标签统一添加一个click事件。事件中判断该条消息是否允许打开,那么就要获取客户端的ip才可以。我就用ajax访问服务器调用后台方法获取了客户端的ip,然后将ip传给前台。然后判断这个ip是否在内网网段内,如果在内网网段则链接跳转,如果不在则去掉默认事件,页面不发生跳转。

实现使用jquery的ajax方法,代码如下:

  $.ajax({
                    type: "GET",
                    dataType: "text",
                    url: "../control/getIp.ashx",
                    success: function (data) {
                        client_ip = data;
                        var ip = client_ip.split('.');
                        if (ip[0] != "202" && ip[0] != "219" && ip[0] != "10")  //内网网段
                        {
                            alert("IP限制,仅限内网访问!");
                            event.returnValue = false;
                        }
                        else {
                            event.returnValue = true;
                        }
                    }                       
                });   
但问题来了,确实获取到了ip,也可以做出正确的判断,但页面依然可以正常跳转。起初一直是以为是默认事件取消的代码不对,或是兼容性问题。但做了兼容处理之后问题依然没有得到解决。通过调试测试才发现这是因为代码的执行时间不一致,获取到ip之前还没有进行判断的时候后面页面跳转的代码已经执行了,然后才进行判断弹出禁止访问,去掉默认事件。才意识到这是ajax的异步执行导致的。

那么如何解决呢?

在jquery的ajax方法中,有这么一个参数设置ajax的异步与同步,async.true代表异步,false代表同步。到此,才明白原来异步与同步的区别在这里:ajax异步访问是指发起请求后在还没得到回应前继续执行后面的js代码,那么在这时就没有获取到ip就无法进行正确的判断。然而同步就是ajax向后台发起请求,前台的js代码就会阻塞在这里,直到收到响应的时候才会继续执行。这也是为什么很多ajax调用里的赋值不起作用的原因,现在终于搞明白了~

修改后的代码如下:

  $.ajax({
                    type: "GET",
                    dataType: "text",
                    url: "../control/getIp.ashx",
                    async:false,       //ajax请求默认是异步的,这里得手动修改。
                    success: function (data) {
                        client_ip = data;
                        var ip = client_ip.split('.');
                        if (ip[0] != "202" && ip[0] != "219" && ip[0] != "10")  //内网网段
                        {
                            alert("IP限制,仅限内网访问!");
                            event.returnValue = false;
                        }
                        else {
                            event.returnValue = true;
                        }
                    }                       
                });   


这个是jquery当中的解决办法,那么原生的ajax也可以去设置的, 在ajax对象的open()方法中第三个参数就是设置同步异步的。true代表异步,false代表同步。

ok~,又积累了一点经验。以后就可以根据自己的需求去决定同步请求还是异步请求了。

Langfuse落地教程:从Docker部署到项目接入,掌控LLM调用链路 大模型应用开发中,调用链路的透明度直接决定调试效率与成本控制。可观测性技术通过记录每次请求的输入、输出、模型参数与Token消耗,帮助开发者快速定位问题。Langfuse作为开源LLM可观测性平台,将Trace、Prompt版本管理、评分等能力集成于一体,支持Docker Compose自托管部署,并提供Python/JS SDK与REST API。借助部署后的控制台,团队能够直观追踪RAG检索、Agent工具调用等复杂流程中的每一步耗时与资源占用,实现从黑盒调用到全链路可视化的转变。无论是本地调试、线上排 阅读详情

相关推荐

ADS重新安装失败排查指南:从注册表清理到环境变量配置

本文详细解析了ADS重新安装失败的常见原因及解决方案,包括注册表残留清理、license路径锁定处理和环境变量配置。通过分步指南和实用技巧,帮助工程师高效解决安装问题,确保软件正常运行。

weixin_42524708的博客 455

ajax发出请求,但数据不更新

如果使用的是post方法就不会出现数据不更新的情况,但是如果用的是get方法,就可能会出现。 解决方法很简单        var str="friend.do?method=see&ID="+id+"&a="+new Date().getTime();         只需在url后加上一个时间标志,这样就可以了...

shao326的专栏 320

别再只跑memtester了!嵌入式Linux内存压力测试,这5个参数和场景你试过吗?

本文深入探讨了嵌入式Linux内存压力测试的高级技巧,重点解析了memtester工具的5个关键参数和实战场景。通过物理地址测试、迭代控制、内存分配策略等调优方法,帮助开发者有效检测内存稳定性问题,适用于长期运行设备、特定故障重现等复杂场景,提升嵌入式系统可靠性。

weixin_30838873的博客 424

关于同步异步的问题

1、同步和异步的概念理解   同步和异步通常用来形容一次方法调用。同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作,而且异步方法通常会在另外一个线程中,“真实”地执行着。整个过程,不会阻碍调用者的工作。 简而言之,言而总之:同步就是我强依赖你(对方),我必须等到你的回复,...

weixin_42572888的博客 297

智能车‘大脑’的诞生:揭秘电磁循迹代码背后的控制论与系统思维

本文深入探讨智能车电磁循迹系统的核心架构与控制原理,揭示了其作为精密闭环系统如何通过模块化设计、信号处理、PID控制算法及电机驱动实现自主导航。重点分析了电磁信号采集与处理流程框架,为开发者提供从理论到实践的全面指南。

arduino9maker的博客 531

汽车行业OTD业务模式入门学习

本文是在学习彭俊松老师的《汽车行业整车订单交付系统》后,对于OTD理解的一些摘录,供诸位参考学习。

qq_40664711的博客 1万+

ajax异步问题

aspx页面:                                                       高拍仪品牌:                                                                                                                          

LeehomeYU的专栏 487

使用CUDA进行按流排序的内存分配的示例程序

在GPU编程中,按流排序的内存分配是一种常见的优化技术,它可以提高内存访问的效率。通过将内存分配与特定的CUDA流相关联,可以确保在GPU上的并发操作期间,内存分配操作与其他GPU计算操作同时进行,从而减少了潜在的内存访问延迟。请注意,上述示例中的代码仅供参考,并可能需要根据实际需求进行修改和调整。此外,为了完整性,我们省略了一些细节,例如主机指针的分配和释放,以及错误处理和错误检查等。在该示例中,我们创建了4个CUDA流,并使用内存池进行内存分配。然后,我们在每个流上执行了相应的内存访问操作,并使用。

Byte_O_O的博客 281

同步和异步问题

一、什么叫同步、异步: 1、同步:同步操作没有结束之前,后面的代码是无法执行的。 2、异步:异步操作没有结束之前,后面的代码是可以执行的。 二、哪些是异步问题: 1、计时函数:setTimeout()、setInterval()。 2、资源加载(I/O操作):在JavaScript脚本代码中动态加载资源。 3、XHR请求:利用Ajax技术向服务器发出请求。 三、异步问题的实际案例: 1、计时函数产...

peijiajing的博客 2842

7.DJI-PSDK:psdk负载应用固件升级(基于RTOS)

在单片机应用程序开发阶段,我们可以借助keil5和J-LINK来直接下载应用程序进行开发和调试, 但在产品交付之后,我们对应用程序做了改动和升级,是断然不可能采用这种方式的,我们应该将新版本的程序固件打包发给客户, 能够方便用户通过DJI Assistant2选择更新负载设备的固件,导入本地固件程序包,更新负载设备。使用STM32F4 开发的负载设备从Flash 中直接读取固件文件并运行负载设备程序,因此开发者需先烧录Bootloader 再烧录应用固件,烧录Bootloader 的步骤不再赘述。

哒宰的博客 673

【反卷积算法】Richardson-Lucy (RL) :通过不断迭代更新图像估计值

Richardson-Lucy(RL)反卷积算法:是一种基于最大似然估计(Maximum Likelihood Estimation, MLE)的图像去卷积方法,常用于去模糊和图像增强。通过不断地更新图像估计值,来最小化模糊图像和恢复图像之间的误差,逐步消除模糊,最终接近真实的原始图像,每次迭代都会根据当前估计的图像来修正下次迭代的结果。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 3038

处理从ajax得到的数据进行判断,ajax异步的问题

这边要从ajax得到一个变量ls_status=1;然后对ls_status进行判断。但是因为ajax异步问题,可能会跳过ajax直接先对ls_status进行判断,然后再执行ajax,这样的话就会出现错误。这边的方法是:我们先将ajax的async设置为false,使他同步执行。然后在ls_status那边设置一个settimeout,使他两秒后再执行判断。这样就能保证ls_status的判断的

weixin_37610189的博客 4321

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

多个ajax请求的同步异步问题分析

【前言】  最近做番茄的项目,在一个ajax执行前,需要判断另一个ajax的执行情况,如果第一个执行成功,让第二个执行。当时运行的时候发现,这2个ajax,同时执行。这就不能满足我的需求了,于是了解了一下ajax的同步异步问题,顺利解决了我的疑惑【分析同步、异步】同步:当请求发出后,浏览器什么都不能做,必须得等到请求完成返回数据之后,才执行后续的代码。  生活中例子:比如你烤面包,把面包放进烤箱里...

千千 2282

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ajax同步异步问题,ajax请求的同步异步问题

前言在做项目的过程中遇到一个bug就是:使用了alert语句后,代码才能正确执行,没使用就执行不成功。后来我就用把console.log,代码就不能正确执行。于是我就去比较了下consol.log和alert有什么不同console.log与alert的不同[1]alert()[1.1]有阻塞作用,不点击确定,后续代码无法继续执行[1.2]alert()只能输出string,如果alert输出的是...

weixin_42098251的博客 740

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ajax为什么能异步,同步AJAX调用的问题,它为什么会对我异步?

我试图从剪切和粘贴代码保持所以我做了一个包装的数据保存到Web服务器:同步AJAX调用的问题,它为什么会对我异步?function saveData(newData) {//clear our error message out.$("#Status").html("");var anID;//save the data to the server$.ajax({type: "POST",url:...

weixin_34069265的博客 235

ajax请求速度异步比同步快,ajax请求的同步异步问题

前言在做项目的新为次发人制通业个到也和一以设近打了基过过程中遇到一个bug就是:使用了alert语句后,代码才能正确执行,没使用就执行不成功分浏代刚的学过互解久点维数数请曾房总题屏断果如以气。泉公一实切式时带近享览码开时会进。,后,护据一。后插新,都次过是宗现制的前搭待个断前能绿和来我就用把console.log,代码就不能正直分调浏器代,刚求的一学础过功互有解小久宗点差维含数如数确执行。于是体朋...

weixin_33668386的博客 495

Ajax同步异步问题

Ajax同步异步问题 作为一个后端,公司莫得前端,所以只能强行写不熟悉的前端代码,遇到无数坑 本来就是一个获取数据库中菜单权限字段的js方法,获取到权限之后显示一个操作按钮,方法如下: function checkMenu() { var mes= []; $.ajax({ type : 'get', url : '/menus/owns', contentType : "appl...

qq_41597111的博客 272

ajax同步异步问题

通过ajax向后台发送和接收数据时,常常会出现同步异步问题。由于ajax是默认异步加载的,但有时候需要同步或者同步的效果,有以下两种解决方案。 方案一:将某些方法放在回调函数中执行,即,等到从后台返回成功后再执行。 例:$.getJSON("/data-access/sens-config/IPandPortSel",{},function(resp){ if(resp.code==0){

abcyyjjkk的博客 989

关于Ajax的同步异步问题

问题描述: 在做项目的过程中,碰到了如下一个问题,花了我两天的时间、、、⊙﹏⊙b汗 问题起因:由于在项目中使用的是Jquery Ajax保存的表单,现在页面上有如下两个表单: form,和subform, 其中form中的主要内容是几个checkbox和文本框 subform中的主要内容是三个文件上传框 [img]http://dl.iteye.com/upload/attachm...

iteye_10194的博客 116

ExtJS4 ajax请求同步异步问题

今天在写代码过程中遇到一个奇怪的问题,事情是这样的,我写了一个简单的页面用来删除选中的用户,请看下面: 因为后台的servlet的代码实现了根据用户名来删除一条记录,所以我在前台的ExtJS代码里面用了循环: function deleteUsers(userList) {//删除用户 var msgTip = Ext.MessageBox.show({//显示正常删除的信息提示框

hu8471479的专栏 4306

多个ajax同步|异步执行问题记录

【问题描述】 做了一个简单的前端页面,通过某个类别列表进行报表查询。 主要有两次ajax,一次是页面初始化的时候加载类别列表下拉框的数据,一次是点击查询时返回报表数据。 #-1> 初始化下拉列表:function initialPrdType() {} #2-> 查询:SelectByPrd(){} 两次查询中的ajax都默认设置 async = true; 即异步方式的情况...

coralime的博客 1502

Ajax 是什么?Ajax 的交互模型?同步和异步的区别?如何解决跨域问题?

ajax AJAX 的全称是异步的 Javascript 和 XML ,是一种创建快速动态的技术,通过在后台与服务器进行少量数据交互,实现网页的异步更新,在不重新加载整个界面的情况下,做到网页的部分刷新; AJAX 的交互模型( AJAX 的过程) 用户发出异步请求; 创建 XMLHttpRequest 对象; 告诉 XMLHttpRequest 对象哪个函数会处理 XMLHttpReque...

M106588L的博客 555

AJAX 同步异步问题

  最近在 JS 中使用 AJAX 遇到了一个坑,大致流程是,我需要循环的调用某一个方法,在该方法中需要使用 AJAX 去获取数据;但是我在主方法中却没有得到我想要的数据。 代码如下: //构建表格数据 var buildOrderTtable = function(res){ //在绑定数据前先清除之前的数据。 $("#order_table...

PZHU_CG_优快云的博客 346

ajax异步会导致数据错乱吗,Ajax同步和异步问题浅析及解决方法

通过ajax向后台发送和接收数据时,常常会出现同步异步问题。由于ajax是默认异步加载的,但有时候需要同步或者同步的效果,有以下两种解决方案。方案一:将某些方法放在回调函数中执行,即,等到从后台返回成功后再执行。例:$.getJSON("/data-access/sens-config/IPandPortSel",{},function(resp){if(resp.code==0){$.each(...

weixin_29779159的博客 611
上一篇: angularjs学习笔记--作用域
下一篇: angularjs学习笔记--服务
lavender21
博客等级 码龄11年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值