开发项目写功能的时候,需要将ajax的返回值赋到全局变量中,然后在该页面其他地方引用,因为ajax异步的原因一直无法成功,只需将async:false,就OK了。
写这个帖子的原因是因为。。。每次需要同步的时候,我记不住‘asyns'这个单词的拼写,每次都得去其他的js里面粘一边过来,为了加深记忆,决定写个使后感。。。
-
async (default:
true
)Type: BooleanBy default, all requests are sent asynchronously (i.e. this is set totrue
by default). If you need synchronous requests, set this option tofalse
. Cross-domain requests anddataType: "jsonp"
requests do not support synchronous operation. Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active. As of jQuery 1.8, the use ofasync: false
with jqXHR ($.Deferred
) is deprecated; you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such asjqXHR.done()
or the deprecatedjqXHR.success()
.
以上为jquery官网给出的API。
By default, all requests are sent asynchronously
ajax默认所有请求都是设置为异步的
If you need synchronous requests, set this option to false
如果需要同步,则设为false
写道
Cross-domain requests and dataType: "jsonp"requests do not support synchronous operation.
同步不支持跨域请求和数据类型:’jsonp'请求
Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active.
请注意,同步请求可能会暂时锁定浏览器,停止任何行为,直到该请求完成
As of jQuery 1.8, the use ofasync: false with jqXHR ($.Deferred) is deprecated;
在jquery1.8中,如果将请求设置为同步的话,则不支持延迟方法($.Deferred详细内容戳这里,讲的挺好的)
开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。
通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。
简单说,deferred对象就是jQuery的回调函数解决方案。在英语中,defer的意思是"延迟",所以deferred对象的含义就是"延迟"到未来某个点再执行。
通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。
简单说,deferred对象就是jQuery的回调函数解决方案。在英语中,defer的意思是"延迟",所以deferred对象的含义就是"延迟"到未来某个点再执行。
you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such as jqXHR.done() or the deprecated jqXHR.success().
所以你必须使用成功/失败/完成的回调函数来替代延迟方法或者不使用延迟方法
总结一下:
1.如果请求是异步的,不能在回调之外直接拿到返回的data
2.如果设为同步的话,会阻塞后面的代码,也就是说如果这个请求需要执行30秒,就必须等30秒执行完之后,才能继续执行下面的
3.同步不支持跨域请求和数据类型:’jsonp'请求
4,如果将请求设置为同步的话,则不支持延迟方法,不能使用$.Deferred,只能使用success/error/complete
来代替比如 deferred.always()/$.when 等
。。。虽然写完了,但是还是不大记得asyns怎么拼啊。。看来要去背背“asynchronous”这个发音了
相关推荐
async在jquery ajax中是一个同步参数。本篇文章给大家介绍jq中的ajax async同步和异步,小伙伴跟着小编一起学习吧
async (Boolean) : (默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。 beforeSend ...
俗说好记性不如个烂笔头,下面是jquery中的ajax方法参数详解,这里整理了一些供大家参考。 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。 2.type: 要求为String类型的参数,请求方式...
ajaxSettings.async参数进行设置,默强调内容认情况下是true,即异步,同步时在方法前设置: $.ajaxSettings.async = false;此时在方法执行完,能return出相应的data。 代码块 /** * 得到列表 */ function ...
异步编程是指由于异步I/O等因素,无法同步获得执行结果时, 在回调函数中进行下一步操作的代码编写风格,常见的如setTimeout函数、ajax请求等等。 示例: for (var i = 1; i <= 3; i++) { setTimeout(function()...
async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。 如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等 待请求完成才可以执行。
async Boolean 是否为异步,默认为false,即同步 timeout Number(ms) 设置请求超时时间(毫秒),此设置将覆盖全局设置 namePrefix String 队列名称前缀,默认为'ajaxQueuer' ajax队列是一个数组,由$.ajax方法...
* @param {boolean}opt.async 是否为异步请求,true为异步的,false为同步的 * @param {object}opt.data 发送的参数,格式为对象类型 * @param {function}opt.success ajax发送并接收成功调用的回调函数 */ ...
结果死活赋值不上,纠结了好半天,后来上网查了查,才知道,ajax默认是异步请求,(当要赋值时,此时的值没有拿到,所以赋值不成功)如果要在$.ajax({里面给全局变量赋值,需要改为同步操作,即加上async : false,...
为什么需要用到同步,因为有时候我们给一个提交按钮注册提交表单数据的时候,在提交动作之前会进行一系列的异步ajax请求操作,但是页面js代码会按顺序从上往下面执行,如果你在这过程中进行了异步操作,那么获取不到...
这一节主要演示下在JQUERY中的ajax方法怎样通过JSONP进行远程调用 首先介绍下$.ajax的参数 type:请求方式 GET/POST url:请求地址 async:布尔类型,默认为true 表示请求是否为异步,如果为false表示为同步。...
事情起因是这样的,因为页面上有多个相似的异步请求动作,本着提高代码可重用性的原则,我封装了一个名为getData的函数,它接收不同参数,只负责获取数据,然后把数据return。基本的逻辑剥离出来是这样的: ...
最近很多人问我ajax该怎么用,怎么访问后台,怎么取得数据页面显示 写一个简单的ajax访问: ... async:false, //控制同步还是异步 data:{scheduleDate:scheduleDate}, //传入参数 success:function(data){ i
方法1:先设置同步在进行Ajax操作 代码如下://在全局或某个需要的函数内设置Ajax异步为false,也就是同步$.ajaxSetup({ async : false }); //然后再进行你的Ajax操作$.post(地址, 参数, function(data, status) {...
更新: 1)更改构造函数,使带参数,简化使用的步骤 类名:AJAXRequest 创建方法: var ajaxobj=new AJAXRequest(method,url,async,content,callback); 如果创建失败则返回false 属性:method – 请求方法,字符...
原因其实很简单,我们用的Ajax是异步操作,也就是说在你赋值的时候数据还没提取出来,你当然赋不进去,所以只要改成同步操作就行~ 方法1:先设置同步在进行Ajax操作 //在全局或某个需要的函数内设置Ajax异步为false...
事情起因是这样的,因为页面上有多个相似的异步请求动作,本着提高代码可重用性的原则,我封装了一个名为getData的函数,它接收不同参数,只负责获取数据,然后把数据return。基本的逻辑剥离出来是这样的: ...
要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行。 cache: 要
开发过程中,AJAX的应用应该说非常频繁,当然,jQuery的AJAX函数已经非常好用,但是小编还是稍微整理下,方便不同需求下,可以简化输入参数,下面是实例代码: $(function(){ /** * ajax封装 * url 发送请求的...
async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。 如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等 待请求完成才可以执行。 cache