详谈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 相关文章推荐
WordPress 照片lightbox效果的运用几点
Jun 22 Javascript
jquery判断单个复选框是否被选中的代码
Sep 03 Javascript
jquery 插件开发方法小结
Oct 23 Javascript
javascript 解决表单仍然提交即使监听处理函数返回false
Mar 14 Javascript
js封装的textarea操作方法集合(兼容很好)
Nov 16 Javascript
瀑布流布局并自动加载实现代码
Mar 12 Javascript
JavaScript省市联动实现代码
Feb 15 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
May 09 Javascript
JSONObject使用方法详解
Dec 17 Javascript
如何使用Vuex+Vue.js构建单页应用
Oct 27 Javascript
Cpage.js给组件绑定事件的实现代码
Aug 31 Javascript
webpack结合express实现自动刷新的方法
May 07 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/25 PHP
提升PHP性能的21种方法介绍
2013/06/25 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
PHP安装memcache扩展的步骤讲解
2019/02/14 PHP
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
使用JavaScript+canvas实现图片裁剪
2015/01/30 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
jQuery实现冻结表格行和列
2015/04/29 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
微信小程序 图片宽度自适应的实现
2017/04/06 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
JS实现碰撞检测效果
2020/03/12 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
python模块导入的方法
2019/10/24 Python
Python实现图片添加文字
2019/11/26 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
Python 在局部变量域中执行代码
2020/08/07 Python
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
几道PHP面试题
2013/04/14 面试题
如何通过jdbc调用存储过程
2012/04/19 面试题
校园广播稿500字
2014/02/04 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
开展读书活动总结
2014/06/30 职场文书
市场策划求职信
2014/08/07 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
利用JavaScript写一个简单计算器
2021/11/27 Javascript
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js