对于Ajax请求中的async:false/true的作用感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解ajaxasyncfalse,并且为您提供关于$.ajax({async:false
对于Ajax请求中的async:false/true的作用感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解ajax async false,并且为您提供关于$ .ajax({async:false})请求仍然异步触发?、$.ajax同步/异步(async:false/true)、909422229_Ajax中async的属性:true与false、ajax async:false/true的作用介绍的宝贵知识。
本文目录一览:- Ajax请求中的async:false/true的作用(ajax async false)
- $ .ajax({async:false})请求仍然异步触发?
- $.ajax同步/异步(async:false/true)
- 909422229_Ajax中async的属性:true与false
- ajax async:false/true的作用介绍
Ajax请求中的async:false/true的作用(ajax async false)
Ajax 作用有两个 1.局部刷新 2.异步 。 在项目中经常可以看到 async 设置为false的。 有时候异步会出问题。
test.html
<a href="javascript:void(0)" onmouSEOver="testAsync()">
asy.js
function testAsync(){
$.ajax({
async: false,
type : "GET",43); font-family:Arial; font-size:14px; line-height:26px">url : 'tet.PHP',43); font-family:Arial; font-size:14px; line-height:26px">complete: function(msg){
alert('complete');
},43); font-family:Arial; font-size:14px; line-height:26px">success : function(data) {
alert('success');
temp=data;
}
});
alert(temp+'
tet.PHP
<?PHP
echo "here is html code";
sleep(5);
?>
如上:false为同步,这个 testAsync()方法中的Ajax请求将整个浏览器锁死,
只有tet.PHP执行结束后,才可以执行其它操作。
当async: true 时,ajax请求是异步的。但是其中有个问题:testAsync()中的ajax请求和其后面的操作是异步执行的,那么当tet.PHP还未执行完,就可能已经执行了 ajax请求后面的操作,
如: alert(temp+'
然而,temp这个数据是在ajax请求success后才赋值的,结果,输出时会为空。
引用:http://blog.csdn.net/yanfangPHP/article/details/8261333
$ .ajax({async:false})请求仍然异步触发?
伙计们,我有一个小问题。我正在尝试实现以下方案:
- 用户打开主页,看到其他用户的列表,然后单击以将其添加到他的朋友列表。
- 我向服务器资源发出Ajax请求,以验证用户是否登录,如果是,我向另一个服务器资源发出另一个Ajax请求,以将其实际添加到用户的朋友列表中。
听起来很简单?这是我做的事情:创建了一个函数isLoggedIn
,该函数将向服务器发出第一个请求,以确定用户是否已登录。我使用jQuery.ajax
方法发出此请求。这是我的函数,如下所示:
function isLoggedIn() {
$.ajax({
async: "false",type: "GET",contentType: "application/json; charset=utf-8",dataType: "json",url: "/isloggedin",success: function(jsonData) {
alert("jsonData =" + jsonData.LoggedIn);
return jsonData.LoggedIn;
}
});
}
返回的JSON非常简单,如下所示:
{ LoggedIn: true } or { LoggedIn : false }
现在,此方法可以实际运行并正确显示警报:JsonData = true
如果已登录,JsonData =
false
如果尚未登录,则到目前为止。没有问题,当我尝试调用此方法时会出现问题:我这样调用:
$(".friend_set .img").click(function() {
debugger;
if (isLoggedIn()) {
alert("alredy logged in");
trackAsync();
popupNum = 6;
}
else {
alert("not logged in"); //always displays this message.
popupNum = 1;
}
//centering with css
centerPopup(popupNum);
//load popup
loadPopup(popupNum);
return false;
});
调用isLoggedIn
总是返回false
,并且返回false before the ajax request finishes (because
the message
jsonData = true is displayed after the message "not logged in". I
made sure that the request is **NOT** Asynchronous by stating
async:false`!
显然,它仍在异步工作。我在这里想念什么?
$.ajax同步/异步(async:false/true)
虽然说ajax用来执行异步请求的比较多,但有时还是存在需要同步执行的情况的。
比如:我需要通过ajax取执行请求以返回一个值,这个值在ajax后面是需要使用到的,这时就不能用异步请求了。这时候就需要使用到async这个属性了。
async:true,(默认),异步方式,$.Ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.Ajax里的success方法,这时候执行的是两个线程。
async:false,同步方式,所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
例如:
- vartemp;
- $.ajax({
- async:false,
- type:"POST",
- url:defaultPostData.url,0);background-color:inherit;">dataType:'json',0);background-color:inherit;">success:function(data){
- temp=data;
- }
- });
- alert(temp);
这个ajax请求为同步请求,在没有返回值之前,alert(temp)是不会执行的。
如果async设置为:true,则不会等待ajax请求返回的结果,会直接执行ajax后面的语句:alert(temp);
909422229_Ajax中async的属性:true与false
Ajax:举个例子:
在门户申请账号的时候,你输入完毕帐号会服务器会进行后台校验帐号的合法性,在校验的同时,用户可以输入其他选项,说明就是异步校验的。
在同步请求的时候,用户是不可以进行其他操作。只可以等待请求完毕之后才可以进行其他操作。
async: false,(默认是true);
如上:false为同步,这个 testAsync()方法中的Ajax请求将整个浏览器锁死,
只有等待页面全部执行结束后,才可以执行其它操作。
当async: true 时,ajax请求是异步的。但是其中有个问题:testAsync()中的ajax请求和其后面的操作是异步执行的,那么当tet.PHP还未执行完,就可能已经执行了 ajax请求后面的操作,
如: alert(temp+'
然而,temp这个数据是在ajax请求success后才赋值的,结果,输出时会为空。
ajax async:false/true的作用介绍
test.html < a href="javascript:void(0)" onmouSEOver="testAsync()"> asy.js function testAsync(){ var temp; $.ajax({ async: false,type : "GET",url : 'tet.PHP',complete: function(msg){ alert('complete'); },success : function(data) { alert('success'); temp=data; } }); alert(temp+' end'); } tet.PHP < ?PHP echo "here is html code"; sleep(5); ?> async: false,(默认是true); 如上:false为同步,这个 testAsync()方法中的Ajax请求将整个浏览器锁死, 只有tet.PHP执行结束后,才可以执行其它操作。 当async: true 时,ajax请求是异步的。但是其中有个问题:testAsync()中的ajax请求和其后面的操作是异步执行的,那么当tet.PHP还未执行完,就可能已经执行了 ajax请求后面的操作, 如: alert(temp+' end'); 然而,temp这个数据是在ajax请求success后才赋值的,结果,输出时会为空。今天关于Ajax请求中的async:false/true的作用和ajax async false的讲解已经结束,谢谢您的阅读,如果想了解更多关于$ .ajax({async:false})请求仍然异步触发?、$.ajax同步/异步(async:false/true)、909422229_Ajax中async的属性:true与false、ajax async:false/true的作用介绍的相关知识,请在本站搜索。
本文标签: