浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值,这时很有可能是因为你用的是ajax的异步调用async:true(默认情况),如:
代码如下:
function ManageCommentText(text) {
var result = text;
$.ajax({
data: "get",
url: "GetComments.aspx",
data: "type=getText&commentText=" + text,
cache: false,
async: false,
success: function (data) {
result = data;
}
})
return result;
以上方法是ajax的同步调用,只有在获取到了data值并赋值给result以后才会返回result完成该方法的调用。若设为async:true,
则会未等到获取data值就已经返回了result。
另一个解决办法就是将你的代码直接写到success方法里。(根据你的业务并不是所有的都可以直接写到success里的)。
注意:如果设定为 async: false,就失去 ajax异步的优点了哦。
相关推荐
-
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
情景 如何在特定的请求上实现"ajaxStart"的效果? 首先,重写Ajax方法的代价太高,仍然可以利用jQuery自身的Ajax Events. Ajax触发的全局事件会像一个标准事件一样传播到所有DOM节点上.层级:jQuery Events > Ajax Events > 自定义Ajax事件. 实现 复制代码 代码如下: Wo = window.Wo || {}; Wo.ajax = { spinner : $([]) ,init : function() { va
-
对Jquery中的ajax再封装,简化操作示例
复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <title>jQueryAja
-
封装了jQuery的Ajax请求全局配置
摘要: jQuery已经成为项目中最常见的js库,也是前端开发最喜欢使用的库.下面是在项目中封装了jQuery的Ajax,分享给大家. 代码: 复制代码 代码如下: // ajax 请求参数 var ajaxSettings = function(opt) { var url = opt.url; var href = location.href; // 判断是否跨域请求 var requestType = 'jsonp'; if (url.indexOf
-
jQuery Ajax 全局调用封装实例代码详解
有一种情况:全站都要用异步方式来调用 数据,提交数据,那么你每次操作 都会要$.ajax({.....}) 写重复的方法 和代码,冗余太大, 也浪费时间,虽说你有代码自动提示补全,但真的不优雅,身为前端极客,是不能允许的! [嘿嘿!虽说我现在基本不用jquery了 ,不过异步概念 是永远要用的,就帮助下新人] jQuery Ajax通用js封装 第一步:引入jQuery库 <script type="text/javascript" src="/js/jquery.mi
-
jquery 全局AJAX事件使用代码
复制代码 代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jQuery Ajax - AjaxEvent</title> <script src="../jquery-1.4.3.js" type="text/javascript"></script> <script type="
-
jquery ajax修改全局变量示例代码
今天工作的时候遇到一个问题 代码如下: 复制代码 代码如下: var status=1; var ob=$("[name='email']"); $.ajax({ url:"{:U('Home/Index/checkemail')}", data:"email="+query.email, type:"post", dataType:"json", success:function(re){ status=
-
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值,这时很有可能是因为你用的是ajax的异步调用async:true(默认情况),如: 复制代码 代码如下: function ManageCommentText(text) {var result = text;$.ajax({data: "get",url: "GetComments.aspx",data: "typ
-
Android Listview 滑动过程中提示图片重复错乱的原因及解决方法
主要分析Android中Listview滚动过程造成的图片显示重复.错乱.闪烁的原因及解决方法,顺便跟进Listview的缓存机制. 1.原因分析 Listview item 缓存机制:为了使得性能更优,Listview会缓存行item(某行对应的view).listview通过adapter的getview函数获得每行的item.滑动过程中, a.如果某行item已经划出屏幕,若该item不在缓存内,则put进缓存,否则更新缓存: b.获取滑入屏幕的行item之前会先判断缓存中是否有可用的it
-
vue组件中节流函数的失效的原因和解决方法
今天使用节流函数的时候遇见了一个问题,搞了半天才找到原因,所以在这里做个总结. 节流函数 浏览器的一些事件,如:resize,scroll,mousemove等.这些事件触发频率太过频繁,绑定在这些事件上的回调函数会不停的被调用,加重浏览器的负担,导致用户体验非常糟糕.所以先贤们发明了节流函数,简单版本如下: function throttle (f, wait = 200) { let last = 0 return function (...args) { let now = Date.no
-
ajax异步回调函数中给外部变量赋值的问题探讨
复制代码 代码如下: <!doctype html> <head> <meta charset="utf-8"> </head> <body> <script src="http://localhost/UIBMSPHPProj/public/js/jquery-1.8.2.min.js"></script> <script> $(function(){ var str
-
jQuery UI Dialog控件中的表单无法正常提交的解决方法
最近使用jQuery UI的Dialog控件时发现如果在此控件放置表单,则所有表单均无法正常提交,具体表现为: 1.提交按钮失效,点击后无任何反应. 2.即便是使用其它手段使页面产生提交,服务器端也无法取到Dialog中的表单数据. 研究了页面源码后发现,jQuery UI Dialog控件初始化时动态生成的HTML元素被添加到页面的尾部.form元素的后面,而原始的Dialog模板部分(其内包含表单元素)也被移到了 动态生成的HTML元素内.也就是说,原先在form内的表单在Dialog初始化
-
直接双击启动tomcat中的startup.bat闪退原因及解决方法
免安装的tomcat双击startup.bat后,启动窗口一闪而过,而且tomcat服务未启动. 原因是:在启动tomcat是,需要读取环境变量和配置信息,缺少了这些信息,就不能登记环境变量,导致了tomcat的闪退. 解决办法: 1.在已解压的tomcat的bin文件夹下找到startup.bat,右击->编辑.在文件头加入下面两行: SET JAVA_HOME=D:\Java\jdk1.6.0_10 (java jdk目录) SET TOMCAT_HOME=E:\tomcat-6.0.35
-
MySQL命令行界面中出现字符错误提示的原因及解决方法
ERROR 2019 (HY000): Can't initialize character set gb2312 搞了好半天,MySQL都重装了两次,号悲剧... 之前设置了系统编码全都是UTF-8了的 vi /etc/sysconfig/i18n LANG=zh_CN.UTF-8 LANGUAGE=zh_CN.UTF-8:zh_CN.GB2312:zh_CN SUPPORTED=zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en SYSFONT=lat0-su
-
asp.net中url字符串编码乱码的原因与解决方法
先看实例 复制代码 代码如下: function webChart() { var t = document.getElementById("txtReceive"); if (t.value == null || t.value == "") { alert("请先进行查询"); } else { alert(t.value);
-
jQuery AJAX实现调用页面后台方法
本文实例为大家分享了jQuery AJAX调用页面后台方法,供大家参考,具体内容如下 1.新建demo.aspx页面. 2.首先在该页面的后台文件demos.aspx.cs中添加引用. using System.Web.Services; 1).无参数的方法调用. 大家注意了,这个版本不能低于.net framework 2.0.2.0已下不支持的. 后台代码: [WebMethod] public static string SayHello() { return "Hello Ajax!&q
-
详解JQuery Ajax 在asp.net中使用总结
自从有了JQuery,Ajax的使用变的越来越方便了,但是使用中还是会或多或少的出现一些让人短时间内痛苦的问题.本文暂时总结一些在使用JQuery Ajax中应该注意的问题,如有不恰当或者不完善的地方,欢迎大家指正和补充. 本文将从Ajax请求aspx.ashx和asmx三种方式讨论. 首先看看请求aspx的情况 Aspx页面的Ajax请求可以有两种方式: 1. 通过使用get或者post方法,传递页面地址为url参数的值,并附带一些标记参数,直接请求.这种方式的Ajax被一些人誉为"假的Aja
随机推荐
- 对一个vbs脚本病毒的病毒原理分析
- jdbc 数据库的连接(sqlserver oracle)
- iOS实现APP程序内部打开APP的AppStore页面
- js与jquery实时监听输入框值的oninput与onpropertychange方法
- 保存到桌面、设为桌面且带图标的PHP代码
- 一个php导出oracle库的php代码
- python之Socket网络编程详解
- java 类加载机制和反射详解及实例代码
- mysql开启远程连接(mysql开启远程访问)
- 解读absolute与relative
- ASP.NET三层架构详解 如何实现三层架构
- 使用FORFILES命令来删除SQLServer备份的批处理
- JS+CSS实现简单的二级下拉导航菜单效果
- 设计模式中的组合模式在JavaScript程序构建中的使用
- Python实战小程序利用matplotlib模块画图代码分享
- PHP实现的超长文本分页显示功能示例
- C#中对称加密算法的踩坑日常记录
- Maven项目改为spring boot项目的方法图解
- Android Support Palette使用详解
- Ubuntu下kaldi安装配置图文教程