进行 Ajax.Remote 调用
在 plan.gsp 中的脚本块中添加一个新函数,如清单 18 所示:
清单 18. 实现 loadHotels()
function loadHotels(){
var url = "${createLink(controller:'hotel', action:'near')}"
url += "?lat=" + airportMarkers[1].getLatLng().lat()
url += "&lng=" + airportMarkers[1].getLatLng().lng()
new Ajax.Request(url,{
onSuccess: function(req) { showHotels(req) },
onFailure: function(req) { displayError(req) }
})
}
var url = "${createLink(controller:'hotel', action:'near')}"
url += "?lat=" + airportMarkers[1].getLatLng().lat()
url += "&lng=" + airportMarkers[1].getLatLng().lng()
new Ajax.Request(url,{
onSuccess: function(req) { showHotels(req) },
onFailure: function(req) { displayError(req) }
})
}
在这里使用 Grails createLink 方法是安全的,因为当在服务器端呈现页面时,Hotel.near() 的 URL 的基本部分是不变的。可以使用客户端 JavaScript 将 URL 的动态部分附加上去,然后使用熟悉的 Prototype 调用发出 Ajax 请求。