详谈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 相关文章推荐
jQuery循环滚动展示代码 可应用到文字和图片上
May 11 Javascript
解读JavaScript中 For, While与递归的用法
May 07 Javascript
jQuery循环滚动新闻列表示例代码
Jun 17 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
Mar 12 Javascript
js手动播放图片实现图片轮播效果
Sep 17 Javascript
AngularJS 应用身份认证的技巧总结
Nov 07 Javascript
Bootstrap的modal拖动效果
Dec 25 Javascript
微信小程序 实现点击添加移除class
Jun 12 Javascript
ng-zorro-antd 入门初体验
Dec 03 Javascript
创建Vue项目以及引入Iview的方法示例
Dec 03 Javascript
原生js实现trigger方法示例代码
May 22 Javascript
vue-cli3.x配置全局的scss的时候报错问题及解决
Apr 30 Vue.js
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/07/10 PHP
PHP爆绝对路径方法收集整理
2012/09/17 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
PHP连接access数据库
2015/03/27 PHP
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
jQuery 中DOM 操作详解
2015/01/13 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
详解Angular2响应式表单
2017/06/14 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
Python基于动态规划算法计算单词距离
2015/07/25 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
Java servlet面试题
2012/03/04 面试题
初婚未育证明
2014/01/15 职场文书
2014学雷锋活动总结
2014/03/09 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
十二生肖观后感
2015/06/12 职场文书
2016高考感言
2015/08/01 职场文书
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python