详谈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 相关文章推荐
[JS]点出统计器
Oct 11 Javascript
改进:论坛UBB代码自动插入方式
Dec 22 Javascript
js继承的实现代码
Aug 05 Javascript
Jquery优化效率 提升性能解决方案
Sep 06 Javascript
常用Extjs工具:Extjs.util.Format使用方法
Mar 22 Javascript
浅谈jQuery中的事件
Mar 23 Javascript
javascript每日必学之封装
Feb 23 Javascript
每日十条JavaScript经验技巧(一)
Jun 23 Javascript
angular 用拦截器统一处理http请求和响应的方法
Jun 08 Javascript
Vue与Node.js通过socket.io通信的示例代码
Jul 25 Javascript
微信小程序实现发送验证码按钮效果
Dec 20 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
Mar 02 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中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
php getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
浅析PHP开发规范
2018/02/05 PHP
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
2010/03/20 Javascript
jQuery创建自己的插件(自定义插件)的方法
2010/06/10 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
Python实现从订阅源下载图片的方法
2015/03/11 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
python实现求最长回文子串长度
2018/01/22 Python
python将list转为matrix的方法
2018/12/12 Python
解决Django中调用keras的模型出现的问题
2019/08/07 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
CSS3实现类似翻书效果的过渡动画的示例代码
2019/09/06 HTML / CSS
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
得到Class的三个过程是什么
2012/08/10 面试题
某公司面试题
2012/03/05 面试题
市场营销专业个人自荐信格式
2013/09/21 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
2014年话务员工作总结
2014/11/19 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书