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;这样可以提交执行的效率。