我正在尝试使用Grails remoteLink使用Ajax调用服务器。代码如下:
<g:remoteLink controller="event" action="recommend" id="1" onSuccess="recommend(e)" params="[artist:searchedArtist]">
Recommend
</g:remoteLink>
控制器是:
def recommend = {
.
.
.
def jsonList = [artist: "${params.artist}",
location: [
lat:"53.872715",
lng:"-1.372895"]
]
render jsonList as JSON
}
和javascript函数是:
function recommend(response){
var recommendedResults = eval('(' + response.responseText + ')');
var point = new google.maps.LatLng(${recommendedResults.location.lat}, ${recommendedResults.location.lng});
var myMarkerOptions = {
position: point,
map: map
};
var marker = new google.maps.Marker(myMarkerOptions);
}
我的问题是从不调用recommended()javascript函数。 有什么想法吗?非常感谢。
更新
我刚注意到这一行:
var point = new google.maps.LatLng(${recommendedResults.location.lat}, ${recommendedResults.location.lng});
不对。所以出于调试目的,我尝试使用“recommended()”这样的javascript函数:
function recommend(response){
alert.window("Foo");
}
仍然无效。警报永远不会弹出。
出现在html源代码中的remoteLink的代码片段是:
<a href="/Ontourtest/event/recommend/1?artist=deftones" onclick="new Ajax.Request('/Ontourtest/event/recommend/1',{asynchronous:true,evalScripts:true,onSuccess:function(e){recommend(e)},parameters:'artist=deftones'});return false;">Recommend</a>
答案 0 :(得分:0)
我发现问题不在于Ajax。这是Javascript函数中的一个错误。我打电话给alert.window()
而不是window.alert()
。
感谢Firebug提示Gregg。
答案 1 :(得分:0)
我完全理解你的问题,
请将您的代码更改为:
< g:remoteLink controller="event" action="recommend" id="1" onSuccess="recommend(data)" params="[artist:searchedArtist]">
Recommend
</g:remoteLink>
你必须在onSuccess和onFailure函数grails中传递数据才能理解它。