这是怎么回事,是javascript的bug还是?

问题描述

要在注册页面验证用户名是否已经注册,想在dwraction.execute的回调函数里给全局变量bol赋值然后在主函数check_register_name()里根据改变了的bol值作进一步处理。非常奇怪的是:如果前面随便加一条alert(3); 则alert("bol_3 = "+bol); 打印 “bol_3 = false”或“bol_3 = true” 说明顺利得到了在回调函数里改变的值;不加alert(3);则打印 "bol_3 = undefined",说明没有得到值。不知道这是什么原因,是javascript 的bug 还是因为在主函数里调用dwraction,因为流程已转到回调函数里,再回到主函数执行流程 这中间有什么问题?var bol; //这是一个全局boolean变量function check_register_name(){ dwraction.execute ( { action: 'checkName', namespace: '/', executeResult: false }, { name: $("name").value }, function(ajaxResult) { var ret = ajaxResult.data.ret; if(ret == 1){ bol = false; }else{ bol = true; } } ); alert(3); //重点在这里 //alert("bol_3 = "+bol);//这里测验bol值是否被正确赋予 //下面是根据bol值做下一步处理 }

解决方案

ajax不是异步的么, 如果不加alert(3);因为是异步的, 就直接执行alert("bol_3 = "+bol);而此时ajaxResult还没有返回, 如果加了alert(3);因为你要点击来关闭这个弹出框, 会有一段时间的延迟,而此时ajaxResutl刚好返回,所以bol就被赋值了!你可以测试一下, 在服务端sleep几秒在返回, 看你加了alert(3);还有没有效果.

时间: 2024-08-25 02:19:54

这是怎么回事,是javascript的bug还是?的相关文章

JavaScript 超级 BUG!多款 x86/ARM 处理器瞬间遭破解

来自阿姆斯特丹自由大学系统及网络安全小组 VUSec 的研究人员本月 15 日揭露了一项攻击技术,可绕过 22 款处理器的 "位址空间配置随机载入"(ASLR)保护,波及 Intel.AMD.NVIDIA 及 SAMSUNG 等处理器品牌. ASLR 是许多操作系统的预设安全机制,它在虚拟位址空间中随机配置应用程序的代码与资料,以提高黑客的攻击门槛,被视为保护网络用户的第一道防线. 而 ASLR 的限制正是现代处理器管理内存的基础,VUSec 研究人员打造了一个 JavaScript

关于Javascript字符串BUG

我们在head中的<Script></Script>中写如下函数: function Test(){var s="<script>document.write('abcdefg');</script>"; alert(s);} 其他Body中的内容随便,这个时候我们用IE6,7,FireFox等浏览器打开,我们可以看到在第一排出现了内容""; alert(s); } ",这是怎么回事?我们再将我们这个函数改写

JavaScript里实用的原生API汇总

  这段时间翻了一番JavaScript的api,发现不少好的轮子,省去造的麻烦了.下面给大家汇总一下,有需要的小伙伴可以参考下. 直接进入正题 解析字符串对象 我们都知道,JavaScript对象可以序列化为JSON,JSON也可以解析成对象,但是问题是如果出现了一个既不是JSON也不是对象的"东西",转成哪一方都不方便,那么eval就可以派上用场 ? 1 2 var obj = "{a:1,b:2}"; // 看起来像对象的字符串 eval("(&qu

养成一个好习惯:在严格模式下开发Javascript

前言 坦白说对于Javascript所谓的严格模式在今年早些时候我还一无所知,真正在开发中应用也就几个月.对于这个ECMAScript5就已经引入的东西,已经不能算新了,对于这个东西一直处在字面的理解上,就是"更加严格,规范的限制Javscript代码的书写",今天打算结合使用的经验好好研究下它到底是怎么回事. 正文 Javascript中如果你想你的代码在严格模式下运行,非常简单,只要在代码的第一行,也就是首行加上"use strict"指令即可.对于那些不支持E

JavaScript里实用的原生API汇总_javascript技巧

直接进入正题 解析字符串对象 我们都知道,JavaScript对象可以序列化为JSON,JSON也可以解析成对象,但是问题是如果出现了一个既不是JSON也不是对象的"东西",转成哪一方都不方便,那么eval就可以派上用场 var obj = "{a:1,b:2}"; // 看起来像对象的字符串 eval("("+ obj +")") // {a: 1, b: 2} 因为 eval 可以执行字符串表达式,我们希望将 obj 这个

关于一个C#正则表达式的问题,是不是BUG?

问题描述 (?<=<spanch="w.tag.yjj"><atarget="_blank"href=".*?">).*?(?=</a>.*?</span>)匹配<divclass="tag"id="questionTag">[ 标签:<spanch="w.tag.yjj"><atarget="

某知名大企业的教训--慎用AJAX框架

ajax|ajax框架 从年初到现在,AJAX之风预演愈烈,尤其是在国内,大多是一片叫好的声音.目前好像很多人都在搞基于AJAX的框架,国外也有一些都已经发布.对于这种一直都存在技术,Google.微软一造势,大家的热度好像有点过了头.看来现在咱们这些程序员真的都是些追星族啊! 难到AJAX真的就那么优秀,值得提升到框架的高度,让系统UI端围着它转?单纯从AJAX本身来说,其最主要不过就是解决在网页上一个无刷新获取数据的问题,再加上减少了数据的传输量,将数据解析的工作推到了客户端,的确能解决很多

jQuery中的fullCalendar控件,给按钮添加监听事件。

问题描述 jQuery中的fullCalendar控件,给按钮添加监听事件. 5C $('#calendar').fullCalendar({ height : 177 header:{ left: 'title' center: '' right: 'prevnext' } theme: false buttonText: { today: '今天' } selectable:true allDayText: '全天' monthNames: ['一月''二月''三月''四月''五月''六月'

作为一名Java程序员,我为什么不在生产项目中转向Go

自Google在2009年发布Go语言的第一个正式版之后,这门语言就以出色的语言特性受到大家的追捧,尤其是在需要高并发的场景下,大家都会想到是不是该用Go.随后,在国内涌现出了一批以七牛为代表的使用Go作为主要语言的团队,而许世伟大神本人也在各种场合下极力推动Go在国内的发展,于是在这种大环境下,中国的Go开发者群体逐渐超越了其他地区. 那么问题来了,业余时间好学是一回事,真正要将一个新东西运用到生产中则是另一回事.JavaScript的开发者可以义无反顾地选择Node.js,但是对于Java开