1、如果在频繁地发送ajax请求,最好在前面的请求发送完成返回后再发送下一个请求,这时候可以用一个全局变量来做状态的标志:
var bMadeRquest = false;//定义全局标志
if(bMadeRquest) return;//如果前一个请求没有返回则不再请求
new Ajax.Request(
url,
{ parameters: pars,
method:'get',
onCreate:function(){
bMadeRquest = true;//请求开始时设置为true
},
onComplete:function(originalRequest){
bMadeRquest = false;//请求结束后还原
......
}
}
);
2、ajax请求返回的结果常常用特殊字符来分隔,记得的是:如果返回结果为空,split后的数组的length也是1。这样,for循环也可以执行进去。所以,一定要对返回的结果进行if的为空判断!这点常常容易忽略!
3、if一定要很经常判断,否则很容易报:java.lang.NullPointerException异常。如原先的写法:
startPnt = MapUtil.getPoint(roadid,startMile);
arrayListX.add(new Double(startPnt.getX()));
arrayListY.add(new Double(startPnt.getY()));
这里没有对startPnt进行是否非空的判断,如果遇到这种情况就会报NullPointerException异常了。解决如下:
if(startPnt!=null){
arrayListX.add(new Double(startPnt.getX()));
arrayListY.add(new Double(startPnt.getY()));
}else{
System.out.println("startPnt is null");
}
4、for循环里有setInterval時,一定要用breadk;否则for循环会继续进行,这样的话,interval里闪动的就不再是前面i=0时候的对象了:
for(var i=0;i<a.length;i++){
var e = dojo.byId(a[i]);
if(e){
if(e.id==id){
var j = 10;
var ii = window.setInterval(function(){
if(j>0){
if(j%2==0){
e.style.border = '1px solid #EE82EE';
}else{
e.style.border = '1px solid #CCCCCC';
}
j--;
}else{
window.clearInterval(ii);
ii = null;
}
},100);
break;
}
}
}
5、for循环一般会用在两个方面,一个的目的单纯就是用于遍历所有的值;另一个是遍历的目的是找其中符合条件的记录;如果是后一种,则会在for里加上if条件相等。如果确定只需要一条符合条件的记录,最好在if符合时加一个break;这样可以提交执行的效率。