详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)


Posted in Javascript onFebruary 10, 2017

test.html

<a href="javascript:void(0)" rel="external nofollow" 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);
}

 

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默认为异步调用,所以很少能直接拿到ajax的返回值。但有时候由于业务需要还必须要通过ajax来拿,那么我这里提供两种方案。

具体方法:

1、就像通过设置async:false让其异步变同步;

2、可以将接下来需要使用到的参数在success之内执行。

这两种方案,你根据你项目的具体实际选择一个。

使用第一种相对来讲,假如你对性能要求不是太大可以选择。

以上这篇详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript拆分字符串时产生空字符的解决方案
Sep 26 Javascript
JavaScript中的replace()方法使用详解
Jun 06 Javascript
JavaScript的Date()方法使用详解
Jun 09 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
Aug 21 Javascript
jQuery带时间的日期控件代码分享
Aug 26 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
Dec 10 Javascript
jQuery实现简单隔行变色的方法
Feb 20 Javascript
vue之nextTick全面解析
May 17 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
Apr 22 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
Jul 22 Javascript
Vue跨域请求问题解决方案过程解析
Aug 07 Javascript
Vue 3.0中jsx语法的使用
Nov 13 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
Feb 10 #Javascript
jQuery基于Ajax方式提交表单功能示例
Feb 10 #Javascript
Bootstrap轮播图学习使用
Feb 10 #Javascript
微信小程序模板之分页滑动栏
Feb 10 #Javascript
三种方式实现瀑布流布局
Feb 10 #Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
Oct 26 #Javascript
Ionic+AngularJS实现登录和注册带验证功能
Feb 09 #Javascript
You might like
PHP生成带有雪花背景的验证码
2008/09/28 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
2013/07/18 Javascript
jquery 操作两个select实现值之间的互相传递
2014/03/07 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
JavaScript模拟push
2016/03/06 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
浅谈es6中的元编程
2020/12/01 Javascript
[02:07]DOTA2超级联赛专访BBC:难忘网吧超神经历
2013/06/09 DOTA
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
Django使用消息提示简单的弹出个对话框实例
2019/11/15 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
北京SQL新华信咨询
2016/09/30 面试题
求职面试个人自我评价
2014/02/28 职场文书
校本教研活动总结
2014/07/01 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
python如何在word中存储本地图片
2021/04/07 Python
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server