今天遇到一个问题.我写了一段ajax代码,当我debug调试的时候结果正确.但是直接运行的时候却反悔错误结果.当我不debug在代码中执行alert的时候也正确.下面是代码.
$.validator.addMethod("isUniq", function(value,element){
var flag = false;
var start = $("#start").val();
var end = $("#end").val();
if(end!= null && "" != end && start != null && "" != start){
$.ajax({
url:"/upgrade-ticket/upgradeTicket/isUniq?timestamp="+ new Date().getTime(),
type:"POST",
data:"&start="+start+"&end="+end,
success:function(data){
if("none" == data){
flag = true;
}else{
flag = false;
}
}
});
}
return flag;
},"该区域号码已被添加,请重新输入.");
针对这个问题,有人说是变量没有赋初始值,但是我的有指定初始值false.原来是ajax同步异步的问题.从ajax的名字就能得知,默认就是异步的.同步需要等待返回结果才能继续,异步不必等待,一般需要监听异步的结果.而此程序就是还没有等待返回结果.所以if中的赋值不起作用.直接return false了.当加入async:false,后,代码执行正确.这一句的作用就是改成同步.完整代码如下:
$.validator.addMethod("isUniq", function(value,element){
var flag = false;
var start = $("#start").val();
var end = $("#end").val();
if(end!= null && "" != end && start != null && "" != start){
$.ajax({
url:"/upgrade-ticket/upgradeTicket/isUniq?timestamp="+ new Date().getTime(),
type:"POST",
async:false,
data:"&start="+start+"&end="+end,
success:function(data){
if("none" == data){
flag = true;
}else{
flag = false;
}
}
});
}
return flag;
},"该区域号码已被添加,请重新输入.");
为什么debug时和有alert操作就执行正确结果?
因为这连个都是阻塞操作,他能等到服务器返回值.
Chart.js 是一个令人印象深刻的 JavaScript 图表库,建立在 HTML5 Canvas 基础上。目前,它支持6种图表类型(折线图,条形图,雷达图,饼图,柱状图和极地区域区)。而且,这是一个独立的包,不依赖第三方 JavaScript 库,小于 5KB。
颜色,字体,边框和它们的尺寸都可以定制,图表可以动画的形式加载,非常炫。
- 推荐18个基于 HTML5 Canvas 的图表库
- 20个惊艳的 HTML5 Canvas 应用试验
- 分享2012年最经典的10款 HTML5 游戏
- 8个惊艳的 HTML5 和 JavaScript 特效
- 35款精致的 CSS3 和 HTML5 网页模板
官方主页 参考教程
- 2012年最佳 Web 前端开发工具和框架
- 史上最全的浏览器 CSS & JS Hack 手册
- 让你的网站变成响应式的三个简单步骤
- 构建杀手级应用 JavaScript 工具和技术
- 推荐25款提高网站可用性和转化率的工具
本文链接:Chart.js – 效果精美的 HTML5 Canvas 图表库
编译来源:梦想天空 ◆ 关注前端开发技术 ◆ 分享网页设计资源
本文链接
YslowYahoo发布的一款基于FireFox的插件,主要是为了提高网页性能而设计的,下面是它提倡了23条规则,还是很不错的,分享一下:
本文链接