2016-10-20 19 views
2

自分のDBに格納されているすべての利用可能なDisciplinesを選択ボックスに入力する必要があります。GrailsコントローラからJSONを選択ボックスに入れる方法

だから、DisciplineControllerに私はこのようなアクションを作成しました:

def getDisciplinesJson() { 

def discList = Discipline.getAll() 
return discList as JSON 

} 

は正しい方法をJSONとして規律を取得することであり、私は、例えばJavascriptを使用して、このアクションを呼び出してくださいどのように、選択を移入ボックスのようなもの:

<select id=disc-select> </select> 

この選択ボックスは、他のページ、「生徒作成」などに表示されます。

答えて

2

多くの方法があります。 jQueryの

<script> 
    function loadDisciplines() { 
    $.ajax({ 
     url: "${createLink(controller: 'DisciplineController', action: 'getDisciplinesJson')}", 
     success: function (data) { 
     //... 
// Parse JSON, create select box etc.. 
     } 
    }); 
    } 
</script> 

を使用してたとえばそしてまた、あなたがコードでテンプレートを作成することができます

"をJSONとしてdiscListをレンダリングする" "JSONとしてdiscListを返す" 変更:

<select id=disc-select> 
<g:each in="${discList}" var="disc"> 
<option value="${disc?.id}">${disc?.name}</option> 
</g:each> 
</select> 

をし、すでにコントローラから復帰レンダリングされたテンプレート:

render template:"pathToTemplate/thisTEmplate", model:[discList:discList] 

次に、loadDisciplines()の成功ブロックでは、のみ配置する必要があります。

$('#disciplines-div').html(data); 

#規律-div要素が

<div id="disciplines-div"></div> 
1

ここであなたがデータリストに選択変更してもかまわない場合は、さらに簡単にすることはDataListコントロールHTML5は、データリストをサポートしている、あなたは見つけることができますexample here:ここに示しています

<input type=text list=browsers> 
<datalist id=browsers> 
    <option value="Firefox"> 
    <option value="IE"> 
    <option value="Chrome"> 
    <option value="Opera"> 
    <option value="Safari"> 
</datalist> 

あなたは自動補完がdataListsで作業を見たいと思った場合は、boselectaをチェックしてください。私は自動補完のためにそれを使用しており、あなたはexample hereを見つけることができます。 jsonをデータリストとして解析するのはいくらか複雑ですが、そのページ内にあります。

0

あなたの質問は、「Grails ControllerからJSONを使ってセレクトする方法」ですが、あなたの例を見てください。なぜそれをJSONで埋め込む必要がありますか?

この場合、<g:select>タグは簡単な方法です。

<g:select id="disc-select" from="${my.package.Discipline.list()}" name="myparam"/>

これはのGSP

を使用してそのyou'reを仮定しています
関連する問題