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

 更新时间:2017年02月10日 09:35:42   投稿:jingxian  
下面小编就为大家带来一篇详谈Ajax请求中的async:false/true的作用(ajax返回值在外部调用问题)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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 在外部调用问题)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • JQuery小知识

    JQuery小知识

    我们通常在执行一次ajax请求过后,需要更新界面上的某些内容,一般通过动态插入dom元素。
    2010-10-10
  • layui文件上传实现代码

    layui文件上传实现代码

    这篇文章主要为大家详细介绍了layui导航栏效果的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载

    artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载

    artDialog是一个轻巧且高度兼容的javascript对话框组件,可让你的网页交互拥有桌面软件般的用户体验
    2012-07-07
  • JQuery中上下文选择器实现方法

    JQuery中上下文选择器实现方法

    这篇文章主要介绍了JQuery中上下文选择器实现方法,涉及jQuery操作页面元素的相关技巧,需要的朋友可以参考下
    2015-05-05
  • jQuery中:radio选择器用法实例

    jQuery中:radio选择器用法实例

    这篇文章主要介绍了jQuery中:radio选择器用法,实例分析了:radio选择器的功能、定义及匹配单选按钮的使用技巧,需要的朋友可以参考下
    2015-01-01
  • jquery 批量上传图片实现代码

    jquery 批量上传图片实现代码

    在网上一直找不到jquery上传图片的例子,今天由于工作需要,在网上找了很长时间,找到了一个不太完整的例子,自已又对其进行了修改,现在已经可以使用,但只限于IE,火狐下不能使用,因为火狐下得不到本地上传的图片路径,希望能对新手有所帮助.
    2010-01-01
  • Jquery 跨域访问 Lightswitch OData Service的方法

    Jquery 跨域访问 Lightswitch OData Service的方法

    修改lightswitch .server project web.config。添加如下内容就可以实现对ApplicationData.svc/跨域访问
    2013-09-09
  • jquery实现吸顶导航效果

    jquery实现吸顶导航效果

    这篇文章主要为大家详细介绍了jquery实现吸顶导航效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • Jquery ThickBox插件使用心得(不建议使用)

    Jquery ThickBox插件使用心得(不建议使用)

    最近发现一个不错的基于jquery的插件thickBox ,感觉比facebox好用。但因为jquery官方不推荐使用。所以这个只是学习的朋友,不建议使用这个。
    2010-09-09
  • 简单几步实现返回顶部效果

    简单几步实现返回顶部效果

    本文分享了网页中经常出现的返回顶部效果,相比原生Javascript,jquery实现起来能够省略不少代码。希望对大家有所帮助
    2016-12-12

最新评论