详谈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中的object转换成number或string规则介绍
Dec 31 Javascript
原生JavaScript实现瀑布流布局
Jun 28 Javascript
基于javascript实现随机颜色变化效果
Jan 14 Javascript
Jquery中巧用Ajax的beforeSend方法
Jan 20 Javascript
jQuery Ajax使用FormData对象上传文件的方法
Sep 07 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
Nov 23 Javascript
jquery实现放大镜简洁代码(推荐)
Jun 08 jQuery
详解Vue2中组件间通信的解决全方案
Jul 28 Javascript
详解webpack3如何正确引用并使用jQuery库
Aug 26 jQuery
ES6学习教程之对象字面量详解
Oct 09 Javascript
Vue拖拽组件开发实例详解
May 11 Javascript
react中的DOM操作实现
Jun 30 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 Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
linux使用crontab实现PHP执行计划定时任务
2014/05/10 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
JAVASCRIPT keycode总结
2009/02/04 Javascript
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
原生js中ajax访问的实例详解
2017/09/19 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
python抓取网页内容示例分享
2014/02/24 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
python3.7添加dlib模块的方法
2020/07/01 Python
Django-Scrapy生成后端json接口的方法示例
2020/10/06 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
年终考核评语
2014/01/19 职场文书
给老师的检讨书
2014/02/11 职场文书
《值日生》教学反思
2014/02/17 职场文书
园林专业毕业生自荐信
2014/07/04 职场文书
党的生日活动方案
2014/08/15 职场文书
安全责任书范文
2014/08/25 职场文书
教师批评与自我批评
2014/10/15 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python
Python 多线程处理任务实例
2021/11/07 Python
MySQL分区以及建索引的方法总结
2022/04/13 MySQL