Grails remoteLink - PullRequest
       15

Grails remoteLink

0 голосов
/ 16 июля 2011

Я пытаюсь позвонить на сервер с помощью Ajax, используя Grails remoteLink. Код следующий:

<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);    
}

Моя проблема в том, что функция javascript require () никогда не вызывается. Какие-нибудь мысли? Большое спасибо.

UPDATE

Я только что заметил, что строка:

var point = new google.maps.LatLng(${recommendedResults.location.lat}, ${recommendedResults.location.lng});

был не прав. Так что просто для целей отладки я попытался использовать функцию javascript "require ()", например:

function recommend(response){
    alert.window("Foo");

  }

и до сих пор не работает. Предупреждение никогда не всплывает.

Фрагмент кода remoteLink, который появляется в источнике html:

<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 голосов
/ 06 сентября 2013

Я полностью понимаю вашу проблему,

Пожалуйста, измените ваш код на:

< g:remoteLink controller="event" action="recommend" id="1" onSuccess="recommend(<strong>data</strong>)" params="[artist:searchedArtist]"> Recommend </g:remoteLink></p> <p>

вы должны передать данные в функции onSuccess, а функции onFailure понимают только это.

0 голосов
/ 17 июля 2011

Я обнаружил, что проблема не в Ajax. Это была ошибка в функции Javascript. Я звонил alert.window() вместо window.alert(). Спасибо за подсказку Firebug Грегг.

...