关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题...
前段时间做一个项目,而项目中所有的请求都要用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请求的回调方法中的操作执行或者变量修改没反映的问题...相关推荐
- 解决:微信支付坑多?其实很简单!在WXPayEntryActivity回调方法中向后台验证支付结果,但获取不到OrderID,下面几种办法应该可以解决。
如标题,好久没做微信支付,之前的坑忘了,今天又遇到,记下来供朋友们参考,话不多说,先大致简单的介绍一下集成微信支付的流程,就几行字的事,希望朋友们有点耐心. Step1. 在微信开放平台上下载微信的S ...
- php400错误的请求,Wordpress中的Ajax返回400错误请求,但不确定如何进一步调试 - WordPress - srcmini...
我一直试图使用Ajax将页面的数据(或其他任何东西)输出到div中.数据基于页面上的列表.尽管调用Ajax请求的jQuery函数似乎可以正常工作, 但是从Ajax调用在控制台上却收到了400个错误的请 ...
- java 数组参数_java中 数组可以作为形式参数传递到调用的方法中吗?要怎么操作?...
展开全部 可以,操作代码如下: public class ArrTest{ public static void doTest(String[] args){ for(int i=0;i System ...
- Eclipse中debug的 setp into 失灵,无法进入方法中的解决方案
setp into正常功能是为了进入方法中,有时候功能出错,会变成setp over向代码下一行执行,这是原因可能是debug设置中jre 和jdk的版本选择问题. 我们右键空白处打开 点击进入后选择 ...
- jQuery框架+DWR框架实现的Java Web中的Ajax效果(异步请求,局部刷新)
一 简介和实现效果 这里用一个小例子来简单举例说明,做一个搜索引擎搜索提示效果,通过不断输入字符,然后在下方给出搜索提示.效果图如下: 通过上图可以看到,当输入一个"a"时,提示了 ...
- mvc ajax返回整个页面跳转,在springmvc中的ajax发布调用之后,有什么方法可以将我的页面(jsp)重定向到另一个页面(jsp)...
基本上,我的情况是我尝试通过使用ajax post将3个对象的列表作为字符串发送到我的控制器,如下所示. AJAX调用的JavaScript函数: $.ajax({ type: 'POST', dat ...
- 在layui中使用ajax传值给后台,解决layui批量传值到后台操作时出现传值为空的问题...
如图,前台的样子,data的参数为 [ {"good_id":1,"good_name":"标样-总磷","good_num&qu ...
- 手势检测的回调方法中onfling与onscroll的区别
onfling参数: e1 The first down motion event that started the fling. e2 The move motion event that trig ...
- 登录系统提示请求数据成功!但回调方法出错;请检查自定义load回调函数。有没有大佬能给解答下这种怎么处理
最新文章
- Sql insert into 后获得自动插入的id
- android重新加载程序,从被杀死的Android应用程序中恢复
- PetShop4,错误提示:System.Web.Security.SqlMembershipProvider”要求一个与架构版本“1”兼容的数据...
- JZOJ 3769. 【NOI2015模拟8.14】A+B
- VTK:采样函数用法实战
- SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装
- Harmonic Number (II) LightOJ - 1245(找规律?大数f(n)=n/1+n/2+n/3+......+n/n)
- java后端工程师平时开发或多或少会用到Myeclipse,那么它有哪些快捷键呢
- 阿里云linux主机安装qt报错:缺少libxkbcommon-x11.so.0
- SQL Server的游标
- HugeGraph 图数据库常见问题汇总
- package.json说明
- 通俗地理解什么是编程语言
- 客户端和服务器实现全双工通信(基于线程)
- oracle之三手工不完全恢复
- 怎么让Excel按某一列的数值来排序?
- C++ 用template实现的堆
- 庖丁解牛:控件事件和数据回发概述
- ExtJS在面向对象所作出的努力
- Kafka权威指南总结