前段时间做一个项目,而项目中所有的请求都要用jquery 中的ajax请求或者post请求,但是开始处理一些简单操作还好,但是自己写了一些验证就出现问题了,比如表单提交的时候,要验证帐号的唯一性,所以要在submit前先请求一次,验证帐号是否已被使用,

中间有一段js如下:

var state = false;
    $.post(url,{username:username},function(data){
        if(!data){
            $('#username').removeClass().addClass('notpass');
            $('#usernameSpan').html("<font color='red'>*该帐号已被使用!</font>");
        }else{
            $('#username').removeClass().addClass('pass');
            $('#usernameSpan').html("<font color='green'>√ 通过</font>");
            state = true;
        }
    });
    return state;

可是不管data为真还是为假,返回值均为false,让我相当郁闷,后来在网上查了下资料,原来这是ajax异步调用导致的。

以前一直不太懂ajax异步调用的原理,后来仔细看了下别人的讲解,才算明白。所谓ajax异步调用就是当用户提交ajax请求的时候,不会等待请求的返回结果,跳过ajax代码块,继续往下执行(post请求也是ajax请求的一种,是一种简化版)。针对这段代码,就是初始state为fasle,而发送一个post请求之后,因为不会等待返回结果,所以中间的if--else 判断还未执行,所以返回的state此时为false。

那怎么让它等待返回结果之后,在继续往下执行呢?有两种方法:

第一种:在一开始把ajax请求设置为同步的,因为ajax请求默认为异步的。即把async 属性设置为false;设置全局的代码如下:

$.ajaxSetup({
    async : false
    });

第二种是在请求中设置,即只设置某个方法为同步的,那么该方法就会等待返回结果,其它方法仍然为异步的。代码如下:

$.ajax({

        type: "POST",

        async : false,

        url: url,

        success: function(data){

           alert( msg );

        }

    });

转载于:https://www.cnblogs.com/wanghang/p/6298919.html

关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题...相关推荐

  1. 解决:微信支付坑多?其实很简单!在WXPayEntryActivity回调方法中向后台验证支付结果,但获取不到OrderID,下面几种办法应该可以解决。

    如标题,好久没做微信支付,之前的坑忘了,今天又遇到,记下来供朋友们参考,话不多说,先大致简单的介绍一下集成微信支付的流程,就几行字的事,希望朋友们有点耐心. Step1. 在微信开放平台上下载微信的S ...

  2. php400错误的请求,Wordpress中的Ajax返回400错误请求,但不确定如何进一步调试 - WordPress - srcmini...

    我一直试图使用Ajax将页面的数据(或其他任何东西)输出到div中.数据基于页面上的列表.尽管调用Ajax请求的jQuery函数似乎可以正常工作, 但是从Ajax调用在控制台上却收到了400个错误的请 ...

  3. java 数组参数_java中 数组可以作为形式参数传递到调用的方法中吗?要怎么操作?...

    展开全部 可以,操作代码如下: public class ArrTest{ public static void doTest(String[] args){ for(int i=0;i System ...

  4. Eclipse中debug的 setp into 失灵,无法进入方法中的解决方案

    setp into正常功能是为了进入方法中,有时候功能出错,会变成setp over向代码下一行执行,这是原因可能是debug设置中jre 和jdk的版本选择问题. 我们右键空白处打开 点击进入后选择 ...

  5. jQuery框架+DWR框架实现的Java Web中的Ajax效果(异步请求,局部刷新)

    一 简介和实现效果 这里用一个小例子来简单举例说明,做一个搜索引擎搜索提示效果,通过不断输入字符,然后在下方给出搜索提示.效果图如下: 通过上图可以看到,当输入一个"a"时,提示了 ...

  6. mvc ajax返回整个页面跳转,在springmvc中的ajax发布调用之后,有什么方法可以将我的页面(jsp)重定向到另一个页面(jsp)...

    基本上,我的情况是我尝试通过使用ajax post将3个对象的列表作为字符串发送到我的控制器,如下所示. AJAX调用的JavaScript函数: $.ajax({ type: 'POST', dat ...

  7. 在layui中使用ajax传值给后台,解决layui批量传值到后台操作时出现传值为空的问题...

    如图,前台的样子,data的参数为 [ {"good_id":1,"good_name":"标样-总磷","good_num&qu ...

  8. 手势检测的回调方法中onfling与onscroll的区别

    onfling参数: e1 The first down motion event that started the fling. e2 The move motion event that trig ...

  9. 登录系统提示请求数据成功!但回调方法出错;请检查自定义load回调函数。有没有大佬能给解答下这种怎么处理

最新文章

  1. Sql insert into 后获得自动插入的id
  2. android重新加载程序,从被杀死的Android应用程序中恢复
  3. PetShop4,错误提示:System.Web.Security.SqlMembershipProvider”要求一个与架构版本“1”兼容的数据...
  4. JZOJ 3769. 【NOI2015模拟8.14】A+B
  5. VTK:采样函数用法实战
  6. SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装
  7. Harmonic Number (II) LightOJ - 1245(找规律?大数f(n)=n/1+n/2+n/3+......+n/n)
  8. java后端工程师平时开发或多或少会用到Myeclipse,那么它有哪些快捷键呢
  9. 阿里云linux主机安装qt报错:缺少libxkbcommon-x11.so.0
  10. SQL Server的游标
  11. HugeGraph 图数据库常见问题汇总
  12. package.json说明
  13. 通俗地理解什么是编程语言
  14. 客户端和服务器实现全双工通信(基于线程)
  15. oracle之三手工不完全恢复
  16. 怎么让Excel按某一列的数值来排序?
  17. C++ 用template实现的堆
  18. 庖丁解牛:控件事件和数据回发概述
  19. ExtJS在面向对象所作出的努力
  20. Kafka权威指南总结

热门文章

  1. 2021-2027年中国透明导电膜玻璃行业市场研究及前瞻分析报告
  2. JVM 常见异常及内存诊断
  3. Java垃圾回收之新生代垃圾收集器
  4. debian10 ftp简单搭建
  5. 【Sql Server】DateBase-事务
  6. Pandas_transform的用法
  7. tf.get_variable
  8. Lidar激光雷达市场
  9. 现代传感器的接口:中断驱动的ADC驱动程序
  10. H.264/H265码流解析