2012-01-04 33 views
0

我面對使用Grails 2 submitToRemote標籤的問題。Grails的2.0更新選擇與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中: 「文本/文本」)相反,它會奏效。可能它有什麼要做,XML的格式不正確(沒有根節點?)。但爲什麼它在Grails 1.3.7中起作用?

回答

0

Grails 1.3.7有一個不同的默認JavaScript提供程序(原型)。 jQuery的AJAX調用改掉它接收

來推斷基於響應的類型