前台开发总结

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

 

你可能感兴趣的:(Ajax,J#,dojo)