|
|
要提供一个查询某点周边的最近设施的功能给同事,在gis端的实现暂不在这里讨论,只讨论前端的接口。写了如下接口:
/* * pursor:latest distance query * author:liugx */function LatestDistanceQuery(){}LatestDistanceQuery.getLatestAttribute= function(road_id,mile) {var url = "/gis_web/webmap/LatestDistanceQueryAction.do";var pars = "ROAD_ID="+road_id+"&MILE="+mile;new Ajax.Request(url,{parameters: pars,method:"get",onCreate:function(){},onComplete:function(originalRequest){var returnText = originalRequest.responseText; return returnText;//以下为测试代码/*if(returnText){ var strAtt = returnText.split(";"); for(var i=0;i<strAtt.length;i++){ jsonArr = eval('(' + strAtt[i] + ')'); alert("NAME="+jsonArr.NAME+",LASTEST_DISTANCE="+jsonArr.LASTEST_DISTANCE+",LYR_FLAG="+jsonArr.LYR_FLAG); }}*/}});} 本想让同事直接在js端调用LatestDistanceQuery.getLatestAttribute()方法就好,返回ajax请求的结果。用的时候发现一个问题,调用LatestDistanceQuery.getLatestAttribute()后,alert结果老是提示underfined。一开始不知道为什么会这样。后来想一想,原来发ajax请求时,因为默认是异步,所以在onComplete还没有完成时,函数就返回了,所以一直返回underfined。只有把ajax请求设置为同步时,才会等候结果返回。
所以,一般我们不用ajax发请求来提供接口。其实,我只要把action提供给同事就好了,调用方是否用ajax请求用调用方决定。
记下,以备录吧。以后可能也会用得到。 |
|