Обновление Grails 2.0 выберите с помощью submitToRemote и визуализации. - PullRequest
0 голосов
/ 04 января 2012

У меня проблема с использованием тега Grails 2 submitToRemote .

Следующий код используется в контроллере:

def getProposal = {
    def layouts = importService.getLayoutsFor(params.product as int)
    render(contentType: "text/xml") {
        for (layout in layouts) {
            option("${layout}")
        }
    }
}

и в GSP:

<g:submitToRemote action="getProposal" update="layouts"
    onLoading="showProgress();" onComplete="hideProgress();"
    value="Do It" />
<select id="layouts" name="layout" required="">
</select>

Использование jquery приводит к:

showProgress();;jQuery.ajax({type:'POST',data:jQuery(this).parents('form:first').serialize(), url:'/app/controller/getProposal',success:function(data,textStatus){jQuery('#layouts').html(data);},error:function(XMLHttpRequest,textStatus,errorThrown){},complete:function(XMLHttpRequest,textStatus){hideProgress();}});return false

, который не работает и возвращает ошибку:

Node cannot be inserted at the specified point in the hierarchy

Но если я использую другой метод рендеринга, например:

render(status: 0, text: "<option value='1'>Layout 1</option>")

это работает.

В обоих случаях ожидаемый ответ передается обратно.

Я не понял, почему он не будет работать с первым более приятным методом.Кто-нибудь может объяснить, что я делаю неправильно?

Thx

Edit:

Я заметил, что если я использую render (contentType: "text / text") вместо этого это будет работать.Может быть, это связано с тем, что xml неправильно отформатирован (без корневого узла?).Но почему это работает в Grails 1.3.7?

1 Ответ

0 голосов
/ 14 января 2012

В Grails 1.3.7 был другой поставщик javascript по умолчанию (прототип).Ajax-вызов jquery пытается определить тип ответа на основе того, что он получает

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