加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax 同步异步

发布时间:2020-12-16 01:47:46 所属栏目:百科 来源:网络整理
导读:开发项目开发过程中,需要将ajax的返回值赋到全局变量中,然后在该页面其他地方引用,因为ajax异步的原因一直无法成功,需将async:false,使其变成同步的。 格式: Js代码 收藏代码 $.ajax({ type: 'POST',url: httpUrl,data: JSON.stringify(params), conte

开发项目开发过程中,需要将ajax的返回值赋到全局变量中,然后在该页面其他地方引用,因为ajax异步的原因一直无法成功,需将async:false,使其变成同步的。

格式:

Js代码 收藏代码

$.ajax({ type: 'POST',url: httpUrl,data: JSON.stringify(params),

contentType: 'application/json',async: false,success: function(data){…},error:function(data){…}});

实例:

Js代码 收藏代码

$.ajax({

type:"post",

url:"getSwitch.do",

data:data,

async:false,

success:function(data){

//登陆超时的处理

if(data=="timeout"){logoutFun();}

if(data.split(",")[0]=="Y"){

var network=$("#network option:selected").val();

if(network == undefined || null==network || network == "") {

temp = true;

}

}

},

error: function(d){

if(d.responseText=="timeout"){logoutFun();temp= true;}

alert("请求失败,可能是服务器或网络异常。");

}

});

总结一下:

1.ajax默认所有请求都是设置为异步的,如果需要同步,则设为false

2.如果请求是异步的,不能在回调之外直接拿到返回的data

3.如果设为同步的话,会阻塞后面的代码,也就是说如果这个请求需要执行30秒,就必须等30秒执行完之后,才能继续执行下面的

4.同步不支持跨域请求和数据类型:’jsonp'请求

5.如果将请求设置为同步的话,则不支持延迟方法,不能使用延迟方法$.Deferred,只能使用success/error/complete来代替比如deferred.always()/$.when等方法


Ajax请求默认的都是异步的
如果想同步 async设置为false就可以(默认是true)

var html = $.ajax({
url: "some.php",
async: false
}).responseText;

或者在全局设置Ajax属性
$.ajaxSetup({
async: false
});

再用post,get就是同步的了

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读