Grails remoteLink

时间:2011-07-16 11:41:30

标签: ajax grails prototypejs

我正在尝试使用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>

2 个答案:

答案 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中传递数据才能理解它。