Grails 1.3.3, JQuery 1.6.1.1, main.gsp - PullRequest
       1

Grails 1.3.3, JQuery 1.6.1.1, main.gsp

0 голосов
/ 15 июня 2011

Я добавил grails.views.javascript.library = "jquery" в config.groovy, установил плагин и запустил "grails InstallJQuery", чтобы получить файлы .js в /web-app/js.

Если я добавлю <g:javascript library="jquery" plugin="jquery"/> к моему представлению, код будет работать так, как ожидается:

search.gsp
...
<g:javascript library="jquery" plugin="jquery"/>
...
  <div id="searchBox">
    <g:remoteField
      name="q"
      update="peoplePanel"
      paramName="q"
      url="[controller:'user', action:'search']" />
  </div>
  <div id="peoplePanel">    <!-- ajax response will be placed in this div -->
  </div>

resulting code:
...
<script type="text/javascript" src="/find-people/plugins/jquery-1.6.1.1/js/jquery/jquery-1.6.1.js"></script>
...
  <div id="searchBox">
    <input type="text" name="q" value="" onkeyup="jQuery.ajax({type:'POST',data:'q='+this.value, url:'/find-people/user/search',success:function(data,textStatus){jQuery('#peoplePanel').html(data);},error:function(XMLHttpRequest,textStatus,errorThrown){}});" />
  </div>
  <div id="peoplePanel">    <!-- ajax response will be placed in this div -->
  </div>

, если я удалю <g:javascript library="jquery" plugin="jquery"/> из представления, добавлю <meta name="layout" content="main"> к представлению и добавлю <g:javascript library="jquery" plugin="jquery"/>к main.gsp, сгенерированный код Ajax отличается, и автозаполнение в поле поиска больше не работает:

main.gsp
...
<g:javascript library="jquery" plugin="jquery"/>
...

search.gsp
...
<meta name="layout" content="main">
...
  <div id="searchBox">
    <g:remoteField
      name="q"
      update="peoplePanel"
      paramName="q"
      url="[controller:'user', action:'search']" />
  </div>
  <div id="peoplePanel">    <!-- ajax response will be placed in this div -->
  </div>

resulting code:
...
<script type="text/javascript" src="/find-people/plugins/jquery-1.6.1.1/js/jquery/jquery-1.6.1.js"></script>
...
  <div id="searchBox">
    <input type="text" name="q" value="" onkeyup="new Ajax.Updater('peoplePanel','/find-people/user/search',{asynchronous:true,evalScripts:true,parameters:'q='+this.value});" />
  </div>
  <div id="peoplePanel">    <!-- ajax response will be placed in this div -->
  </div>

Я не имею никакого контроля над тем, как обрабатывается под прикрытием.Похоже, что не использовать layout / main.gsp - это единственный вариант, но он имеет очевидные недостатки.

1 Ответ

1 голос
/ 16 июня 2011

Кажется, что по умолчанию Prototype имеет приоритет над jQuery. Попробуйте удалить прототип.

p.s вам не нужно запускать grails InstallJQuery, если вы используете

<g:javascript library="jquery" plugin="jquery"/>

Вы должны использовать <g:javascript library="jquery" /> после запуска grails InstallJQuery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...