Ajax同步和异步问题浅析及解决方法
通过ajax向后台发送和接收数据时,常常会出现同步异步问题。由于ajax是默认异步加载的,但有时候需要同步或者同步的效果,有以下两种解决方案。
方案一:将某些方法放在回调函数中执行,即,等到从后台返回成功后再执行。
例:
$.getJSON("/data-access/sens-config/IPandPortSel",{},function(resp){ if(resp.code==0){ $.each(resp.data,function(i,obj){ option_net_type += addOption(obj); }); $("#edit-addr_id").append(option_net_type); addr_idOld = $('#edit-addr_id').val(addr_id); } });
红色的部分必须在数据返回成功后执行,如果放在if(resp.code==0){}外面((但放在$.getJSON();后面)会存在数据还没从后台返回,就已经执行到红色部分代码了。
方法二:利用标准ajax传递方式
$.ajax({ type : "post", url : "/data-access/manufacturer/deleteBranch", data : data, async : false,//取消异步 success : function(resp){ if(resp.code==0){ if(ids.length>=currentListNum&¤tPage!=1){ currentPage = currentPage - 1; } var para = { mypara :currentPage, startPage : currentPage, }; $('div.page-box').data('myPage').setOptions({data: para}); } } });
注意:这种方式只是局部的同步传输方式,不会对其他传输造成影响,是比较安全和推荐的一种
方式。
还存在另外一种方式:
// $.ajaxSettings.async = false; // $.getJSON("/data-access/ip-config/deleteBranch",data,function(resp){ // if(resp.code==0){ // if(ids.length>=currentListNum&¤tPage!=1){ // currentPage = currentPage - 1; // } // var para = { // mypara :currentPage, // startPage : currentPage, // }; // $('div.page-box').data('myPage').setOptions({data: para}); // } // }); // $.ajaxSettings.async = true;
这种方式是全局的,不是很推荐使用,因为会对其他ajax传输造成影响。
以上所述是小编给大家介绍的Ajax同步和异步问题浅析,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
相关推荐
-
jquery ajax 同步异步的执行示例代码
大家先看一段简单的jquery ajax 返回值的js 代码 复制代码 代码如下: function getReturnAjax{ $.ajax({ type:"POST", http://www.jb51.net/userexist.aspx", data:"username="+vusername.value, success:function(msg){ if(msg=="ok"){ showtipex(vusername.id,
-
Jquery Ajax解析XML数据(同步及异步调用)简单实例
复制代码 代码如下: $.ajax({ async: true, // 默认true(异步请求) cache: true, // 默认true,设置为 false 将不会从浏览器缓存中加载请求信息. type: "POST", // 默认:GET 请求方式:[POST/GET] dataType: "xml", //默认["xml&quo
-
jquery ajax同步异步的执行最终解决方案
大家先看一段简单的jquery ajax 返回值的js 代码 复制代码 代码如下: function getReturnAjax{ $.ajax({ type:"POST", http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx", data:"username="+vusername.value, success:function(msg){ if(msg=="ok"
-
jquery的ajax同步和异步的理解及示例
之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题.最近的项目用了到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除. 而异步则这个AJAX代码运行中的时候其他代码一样可以运行. jquery的async:false,这个属性 默认是true:异步,false:同步. 复制代码 代码如下: $.ajax({ type: "post",
-
Ajax请求中的异步与同步,需要注意的地方说明
之前做项目时候,用到一个表格控件,它的数据是异步加载的,我在这个表格绑定数据的函数下面友做了一些业务处理,运行页面的时候,用浏览器在我写业务处理那地方打上断点跟踪,它确实执行了,可以最后显示的时候,它的处理被覆盖了,我很纳闷,当时也知道是这个表格绑定函数那出问题了,可是时间紧,它的函数是封装的,没有去具体跟踪,就直接让我的那部分业务处理延迟200ms执行,这样就好了,这是个笨法,不过也是个有效的办法,呵呵. 后来看了下文档,查了些资料,其实原理应该是这样的: 默认设置下,所有请求均为异步请求.如
-
ajax 同步请求和异步请求的差异分析
ajax同步和异步的差异, 先看2段代码: 代码一: 复制代码 代码如下: Synchronize = function(url,param) { function createXhrObject() { var http; var activeX = [ "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ]; try { http = new XMLHttpRequest;
-
AJAX下的请求方式以及同步异步的区别小结
请求方式,分为GET与POST: GET 最为常见的HTTP请求,普通上网浏览页面就是GET.GET方式的参数请求直接跟在URL后,以问号开始.(JS中用window.location.search获得).参数可以用encodeURIComponent进行编码,使用方式: var EnParam = encodeURIComponent(param); URL只支持大约2K的长度,即2048字符数:使用GET进行AJAX请求时候会缓存导致出现的页面不是正确的,一般方法加random参数值:aja
-
jquery ajax属性async(同步异步)示例
例1.jquery+ajax/" target="_blank">jquery ajax同步方式 复制代码 代码如下: $.ajax({url : 'test.php',type : 'post',async: false,//使用同步的方式,true为异步方式data : {'act':'addvideo', 'videoname':videoname},//这里使用json对象success : function(data){//code here...},fail
-
jquery ajax 同步异步的执行 return值不能取得的解决方案
大家先看一段简单的jquery ajax 返回值的js 代码 复制代码 代码如下: function getReturnAjax{ $.ajax({ type:"POST", data:"username="+vusername.value, success:function(msg){ if(msg=="ok"){ showtipex(vusername.id,"<img src='images/ok.gif'/><
-
Ajax同步和异步问题浅析及解决方法
通过ajax向后台发送和接收数据时,常常会出现同步异步问题.由于ajax是默认异步加载的,但有时候需要同步或者同步的效果,有以下两种解决方案. 方案一:将某些方法放在回调函数中执行,即,等到从后台返回成功后再执行. 例: $.getJSON("/data-access/sens-config/IPandPortSel",{},function(resp){ if(resp.code==0){ $.each(resp.data,function(i,obj){ option_net_ty
-
jquery中的ajax同步和异步详解
之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题.最近的项目用了到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除. 而异步则这个AJAX代码运行中的时候其他代码一样可以运行. jquery的async:false,这个属性 默认是true:异步,false:同步. $.ajax({ type: "post", url: "
-
ajax传送参数含有特殊字符的快速解决方法
JQuery AJAX中遇到这样一个问题,参数中包含特殊字符,比如&'#@等, 这时执行AJAX的时候就会出问题,因为所传的参数变了.看个示例就明白: 方案一: $.ajax({ url: '/ashx/ajax.ashx', type: 'post', data: 'option=delete&name=11&adb, success: function (data) { if (data != 'error ') { } } }); ' 上面执行的ajax就是异步删除一个nam
-
ajax的get请求时缓存处理解决方法
本文实例讲述了ajax的get请求时缓存处理解决方法.分享给大家供大家参考.具体分析如下: 很多时候在Ajax的get方法调用的时候由于缓存的原因无法及时获取正确的数据,这里就来分析一下解决这一问题的方法: 1. 在url后面添加一个随机数,如: 复制代码 代码如下: http://www.test.com?a=a&b=b&r=Math.random(); 2. 在url后面添加时间戳: 复制代码 代码如下: var t = new Date().getTime(); http://www
-
ajax同步验证单号是否存在的方法
本文实例讲述了ajax同步验证单号是否存在的方法.分享给大家供大家参考,具体如下: //保存前执行的方法,ajax同步调用后台验证包裹单号是否存在 function doBeforeSave(){ var packageCode=document.getElementById("packageCode").Value; var temp=false; if(packageCode!=""){ $.ajax({ url: "${ctx}/finance/pa
-
ajax 同步和异步XMLHTTP代码分析
在网页脚本编程中,绝大多数情况应该使用异步模式:同步模式将会挂起当前的脚本引擎,所以当你使用同步模式时,你应该明白自己要什么.而在C++开发中,同步模式应该是主流,如果一定要使用异步模式加回调,可以参考Using IXMLHTTPRequest onreadystatechange from C++一文. 下面是采用异步模式获取远程主机上RSS文件的代码,关键的地方是设置一个回调函数给IXMLHTTPRequest::onreadystatechange.为了防止脚本过早退到控制台,使用了asy
-
jQuery中ajax的使用与缓存问题的解决方法
1:GET访问 浏览器 认为 是等幂的就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配]所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果 POST则 认为是一个 变动性 访问 (浏览器 认为 POST的提交 必定是 有改变的) 防止 GET 的 等幂 访问 就在URL后面加上 ?+new Date();,[总之就是使每次访问的URL字符串不一样的] 设计WEB页面的时候 也应该遵守这个原则 2:一.谈Ajax的Get和Post的区别
-
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
解决方法: 使用服务器作为代理. 在PHP中, 使用我最喜欢的最强大的CURL,嘿嘿 下面是在万网查询域名的实例代码 复制代码 代码如下: <?php $dn = $_GET['dn']; // 域名, 不包括www $ex = $_GET['ex']; // 顶级域名, 如 .com, .cn, 包括最前面的. // 查询域名是否已经注册 $url = 'http://pandavip.www.net.cn/check/check_ac1.cgi'; $ch = curl_init($url)
-
web服务器集群(多台web服务器)session同步、共享的3种解决方法
在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,一个登录用户,一会是登录状态,一会又不是登录状态.所以本文就根据这种情况给出三种不同的方法来解决这个问题: 一.利用数据库同步session 在做多服务器session同步时我没有用这种方法,如果非要用这种方法的话,我想过二种方法: 1,用一个低端电脑建个数据库专门存放web服务器的session,或者,把这个专门的数据库建在文件服务器上
-
js跨域问题浅析及解决方法优缺点对比
什么是跨域? 概念:只要协议.域名.端口有任何一个不同,都被当作是不同的域. 复制代码 代码如下: URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.js http://www
随机推荐
- 解密ASP源代码
- 详细介绍8款超实用JavaScript框架
- 一篇看懂vuejs的状态管理神器 vuex状态管理模式
- 快速把硬盘分成四个区的图解_图解硬盘分区
- 详解Nginx服务器中配置超时时间的方法
- DOS下常用的相关网络命令总结
- IKAnalyzer结合Lucene实现中文分词(示例讲解)
- 浅析JS中对函数function的理解(基础篇)
- 微信扫描二维码登录网站代码示例
- ThinkPHP 3.2.3实现页面静态化功能的方法详解
- 在Android中访问WebService接口的方法
- php json相关函数用法示例
- python备份文件以及mysql数据库的脚本代码
- 基于JavaScript实现鼠标箭头移动图片跟着移动
- 浅析被遗忘的SQLServer比较运算符修饰词
- Spring Cloud与分布式系统简析
- js实现用滚动条来放大缩小图片的代码
- 可读可执行的C语言简历源文件
- 关于javascript函数的几个话题
- 简单学习Android TextView