大家先看一段简单的jquery ajax 返回值的js

代码 
function getReturnAjax{
  $.ajax({
    type:"POST",
    http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx",
    data:"username="+vusername.value,
    success:function(msg){
    if(msg=="ok"){   
   showtipex(vusername.id,"<img src='images/ok.gif'/><b><font color='#ffff00'>该用户名可以使用</font></b>",false)
      return true;
    }
    else
    {    
    showtipex(vusername.id,"<img src='images/cancel.gif'/><b><font color='#ffff00'>该用户已被注册</font></b>",false);
      vusername.className="bigwrong";
      return false;
    }
    }
  });
  }
 但是我们调用这个getReturnAjax()发现始终取得的都是false,那就是说return true,return false根本没有起作用,在火狐下用firebug调试也证明,代码根本不会执行到return 部分。

我们试想在函数里先定义一个变量,然后在ajax里赋值,最后在函数的末尾返回这个变量,会不会有效果呢?我们把代码修改如下:

代码 
function getAjaxReturn()   
{
       var bol=false;
  $.ajax({
    type:"POST",
    http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx",
    data:"username="+vusername.value,
    success:function(msg){
    if(msg=="ok"){   
   showtipex(vusername.id,"<img src='images/ok.gif'/><b><font color='#ffff00'>该用户名可以使用</font></b>",false)
      // return true;
   bol=true;
    }
    else
    {    
    showtipex(vusername.id,"<img src='images/cancel.gif'/><b><font color='#ffff00'>该用户已被注册</font></b>",false);
      vusername.className="bigwrong";
      //return false;
    }
    }
  });
  return bol;
  }
结果仍然不起作用。最后解决方案有2,如下

1、添加async:false.即修改为同步了,什么意思?(按同事解释就是,这是等这个ajax有了返回值后才会执行下面的js。一语道破天机,怪不得以前很多ajax调用里面的赋值都不起作用)。这样等ajax给bol赋值完毕后,才执行下面的js部分。而刚刚异步的话,还没有来得及赋值,就已经return了。

代码 
function getAjaxReturn()   
{
       var bol=false;
  $.ajax({
    type:"POST",
    async:false,
    http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx",
    data:"username="+vusername.value,
    success:function(msg){
    if(msg=="ok"){   
   showtipex(vusername.id,"<img src='images/ok.gif'/><b><font color='#ffff00'>该用户名可以使用</font></b>",false)
      // return true;
   bol=true;
    }
    else
    {    
    showtipex(vusername.id,"<img src='images/cancel.gif'/><b><font color='#ffff00'>该用户已被注册</font></b>",false);
      vusername.className="bigwrong";
      //return false;
    }
    }
  });
  return bol;
  }

2、 通过传入一个函数解决这个问题。

代码 
function getAjaxReturn(success_function,fail_function)
{
       var bol=false;
  $.ajax({
    type:"POST",
    http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx",
    data:"username="+vusername.value,
    success:function(msg){
    if(msg=="ok"){   
   showtipex(vusername.id,"<img src='images/ok.gif'/><b><font color='#ffff00'>该用户名可以使用</font></b>",false)
success_function(msg);
    }
    else
    {    
    showtipex(vusername.id,"<img src='images/cancel.gif'/><b><font color='#ffff00'>该用户已被注册</font></b>",false);
      vusername.className="bigwrong";
fail_function(msg);
      //return false;
    }
    }
  });
function success_function(info)
{
//do what you want do
alert(info);
}
funciont fail_function(info)
{
//do what you  want do
alert(info);
}
原文网址:http://www.fengfly.com/plus/view-168542-1.html

jquery的ajax同步异步执行的更多相关文章

  1. jquery ajax 同步异步的执行

    jquery ajax 同步异步的执行   大家先看一段简单的jquery ajax 返回值的js 代码 function getReturnAjax{  $.ajax({    type:" ...

  2. jquery的ajax同步和异步

    之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题.最近的项目用了到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去 ...

  3. ajax同步异步问题

    之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题.最近的项目用了到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去 ...

  4. jquery的ajax同步和异步的理解及示例

    之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题.最近的项目用了到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去 ...

  5. ajax同步异步

    test.html <a href="javascript:void(0)" onmouseover="testAsync()"> asy.js f ...

  6. $.ajax同步/异步(async:false/true)

    虽然说ajax用来执行异步请求的比较多,但有时还是存在需要同步执行的情况的. 比如:我需要通过ajax取执行请求以返回一个值,这个值在ajax后面是需要使用到的,这时就不能用异步请求了.这时候就需要使 ...

  7. jquery和Ajax(异步js和XML)的应用

    Ajax不是值一种单一的技术,而是有机的利用了一系列的交互式网页应用相关的技术所形成的的结合体.它的出现,解开了无刷新更新网页的新时代,并代替传统的Web方式和通过隐藏的框架来进行异步提交的趋势,是w ...

  8. AJAX 同步异步笔记

    就在刚才,做一个很简单的Demo, 预览MP4视频文件 这就是一个video标签嘛,然后再动态的给src赋值嘛.这还不是so easy? 好,说做就做.先简单的测试一下.先给src赋值一下. 嗯,可以 ...

  9. jQuery中ajax方法无法执行回调函数问题

    最近遇到一个问题,发现使用jquery的ajax方法时,回调方法无法执行,而使用$.load()方法时却能正确返回数据.经过长时间调试最终发现是自己粗心大意,原来后台返回的是json数据,而返回的数据 ...

随机推荐

  1. CSS居中布局方案

    基本结构 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  2. C# 把时间 月 //把第一个0替换为空

    string str = "2019-01"; //name: "2019-01月" str = str.Substring(str.Length - , ); ...

  3. JSON数据 与 JSON数据的使用

    https://blog.csdn.net/u010378878/article/details/52943792 https://blog.csdn.net/liuxuan12417/article ...

  4. PHP控制反转(IOC)和依赖注入(DI

    <?php class A { public $b; public $c; public function A() { //TODO } public function Method() { $ ...

  5. Python - 模块(一)

    目录 Python - 模块(一) 模块的引用方式 常用模块 random(随机模块) os模块 sys 序列化模块 hashlib subprocess optparse struct Python ...

  6. Java基础学习总结(42)——Log4j 2使用教程

    1. 去官方下载log4j 2,导入jar包,基本上你只需要导入下面两个jar包就可以了(xx是乱七八糟的版本号): log4j-core-xx.jar log4j-api-xx.jar 2. 导入到 ...

  7. Ajax 请求之_请求类型详解

    $.ajax({ url: "规定发送请求的 URL.默认是当前页面.", type: "post", // 请求类型,默认get // 在回调函数中,无需将j ...

  8. UE 高亮 一个或多个关键字的方法

    #######2014-11-20,11:13:06######### 一.高亮一个关键字 方法1: 选中该关键字, Ctrl + .   即可: 方法2: 选中该关键字, Shift  + 双击左键 ...

  9. 计算机与linux操作系统的发展

    一.计算机 (一)计算机的概念 1.概念:计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能.是能够按照程序运行,自动.高速 ...

  10. 洛谷 P2195 HXY造公园

    P2195 HXY造公园 题目描述 现在有一个现成的公园,有n个休息点和m条双向边连接两个休息点.众所周知,HXY是一个SXBK的强迫症患者,所以她打算施展魔法来改造公园并即时了解改造情况.她可以进行 ...