我使用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
编辑:
我注意到,如果我使用渲染(contentType:“text / text”),它将起作用。可能有事情要做,xml没有正确格式化(没有根节点?)。但为什么它在Grails 1.3.7中有效?
答案 0 :(得分:0)
Grails 1.3.7有一个不同的默认javascript提供者(原型)。 jquery ajax调用trys根据收到的内容推断响应的类型