六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 39|回复: 0

ajax请求提供接口的讨论

[复制链接]

升级  81.33%

46

主题

46

主题

46

主题

秀才

Rank: 2

积分
172
 楼主| 发表于 2013-1-23 02:19:25 | 显示全部楼层 |阅读模式
要提供一个查询某点周边的最近设施的功能给同事,在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请求用调用方决定。
记下,以备录吧。以后可能也会用得到。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表