GVKun编程网logo

Ajax请求中的async:false/true的作用(ajax async false)

7

对于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/true的作用(ajax async false)

Ajax 作用有两个 1.局部刷新 2.异步 。 在项目中经常可以看到 async 设置为false的。 有时候异步会出问题。

test.html


<a href="javascript:void(0)" onmouSEOver="testAsync()">

asy.js
function testAsync(){
var temp;
$.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+' end');
tet.PHP
<?PHP
echo "here is html code";
sleep(5);
?> 默认是true);
如上: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({async:false})请求仍然异步触发?

伙计们,我有一个小问题。我正在尝试实现以下方案:

  1. 用户打开主页,看到其他用户的列表,然后单击以将其添加到他的朋友列表。
  2. 我向服务器资源发出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 messagejsonData = true is displayed after the message "not logged in". I made sure that the request is **NOT** Asynchronous by statingasync:false`!

显然,它仍在异步工作。我在这里想念什么?

$.ajax同步/异步(async:false/true)

$.ajax同步/异步(async:false/true)

虽然说ajax用来执行异步请求的比较多,但有时还是存在需要同步执行的情况的。

比如:我需要通过ajax取执行请求以返回一个值,这个值在ajax后面是需要使用到的,这时就不能用异步请求了。这时候就需要使用到async这个属性了。

async:true,(默认),异步方式,$.Ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.Ajax里的success方法,这时候执行的是两个线程。

async:false,同步方式,所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。


例如:

[html] view plain copy
  1. vartemp;
  2. $.ajax({
  3. async:false,
  4. type:"POST",
  5. url:defaultPostData.url,0);background-color:inherit;">dataType:'json',0);background-color:inherit;">success:function(data){
  6. temp=data;
  7. }
  8. });
  9. alert(temp);

这个ajax请求为同步请求,在没有返回值之前,alert(temp)是不会执行的。

如果async设置为:true,则不会等待ajax请求返回的结果,会直接执行ajax后面的语句:alert(temp);

909422229_Ajax中async的属性:true与false

909422229_Ajax中async的属性:true与false

Ajax:

举个例子:

在门户申请账号的时候,你输入完毕帐号会服务器会进行后台校验帐号的合法性,在校验的同时,用户可以输入其他选项,说明就是异步校验的。

在同步请求的时候,用户是不可以进行其他操作。只可以等待请求完毕之后才可以进行其他操作。

async: false,(默认是true);
如上:false为同步,这个 testAsync()方法中的Ajax请求将整个浏览器锁死,
只有等待页面全部执行结束后,才可以执行其它操作。


当async: true 时,ajax请求是异步的。但是其中有个问题:testAsync()中的ajax请求和其后面的操作是异步执行的,那么当tet.PHP还未执行完,就可能已经执行了 ajax请求后面的操作,

如: alert(temp+'end');

然而,temp这个数据是在ajax请求success后才赋值的,结果,输出时会为空。

ajax async:false/true的作用介绍

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的作用介绍的相关知识,请在本站搜索。

本文标签: