【发布时间】:2012-01-04 15:19:38
【问题描述】:
我在使用 Grails 2 submitToRemote 标签时遇到问题。
以下代码是我在控制器中使用的:
def getProposal = {
def layouts = importService.getLayoutsFor(params.product as int)
render(contentType: "text/xml") {
for (layout in layouts) {
option("${layout}")
}
}
}
在普惠制中:
<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>")
它有效。
在这两种情况下,预期的答案都会被传回。
我不明白为什么它不适用于第一个更好的方法。谁能解释我做错了什么?
谢谢
编辑:
我注意到如果我使用 render(contentType: "text/text") 代替它会起作用。可能与xml格式不正确(没有根节点?)有关。但为什么它可以在 Grails 1.3.7 中工作?
【问题讨论】: