自定义的请求和响应
前面用户的请求都是通过Task、Toolbar来执行的,在这一章里,我们将不使用这些ADF组件,来看看没有了它们的帮助,你应该怎么自己发送AJAX请求,或者在原先输出的AJAX响应中添加上一些额外的信息。
一 发送AJAX请求
首先让我们看一下怎么不依靠任何ADF组件的帮助来发送一个AJAX请求,比如,在页面上有一个纯HTML的表单按钮,我们希望点击这个按钮的时候可以发送一个AJAX请求到服务器,应该怎么做?
那就让我们假设这样一个场景:用户点击一个HTML的“放大5倍”按钮,地图就可以放大5倍。要实现这样的功能,当然首先是需要添加一个按钮,这个按钮的onclick事件对应到一个JavaScript函数:
"button" value=" 放大5倍" onclick="mapZoom();" />
function mapZoom()
{
var formId = map.formId;
var url = EsriUtils.getServerUrl(formId);
var params = "mapZoom=true&" + EsriUtils.buildRequestParams(formId);
EsriUtils.sendAjaxRequest(url, params, true , EsriControls.processPostBack);
}
发送AJAX请求有两个条件,一是知道需要发送的目标URL、还有一个就是发送的参数。我们可以从上面看到,AJAX请求的URL可以通过EsriUtils这个工具类来获得,ADF的JavaScript库已经做好了封装;对于AJAX的参数,则首先需要使用EsriUtils的另外一个方法buildRequestParams来构建基础的请求参数,在这些参数中包含了ADF组件的相关信息,这是ADF的AJAX请求必须的;在这个参数的基础上再加上额外的信息,比如这里需要地图作一个放大操作,那么我可以添加一个请求参数mapZoom,后面你会看到我们在服务器端会使用到这个mapZoom的值。