lgx2351 发表于 2013-1-23 02:19:25

ajax请求提供接口的讨论

要提供一个查询某点周边的最近设施的功能给同事,在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 + ')');   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请求用调用方决定。
记下,以备录吧。以后可能也会用得到。
页: [1]
查看完整版本: ajax请求提供接口的讨论