У меня проблема с использованием тега 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?