ドメインモデル(A)の編集を処理するフォームがあります。このドメインモデルもhasMany
他のドメインモデル(B)。したがって、Aに新しいBsを追加するには、カスタムAJAX関数を実装して、いくつかの入力フィールドのパラメータをコントローラに送信したかったのです。外部Javascriptファイルのコントローラ/アクションへのURL
そうするためには、私は次のGSP作成しました:
<g:form>
<!-- other stuff concerning entity A -->
<p>Add B to A</p>
<input type="text" id="bName" /> <input type="text" id="bSomeProperty" <a href="#" id="addB">Add</a>
</g:form>
をそしてresources
プラグインによってロードされている私のmain.js
へのJavascriptの以下の部分を追加しました。
$("#addB").click(function() {
$.ajax({
url: '', // controller: a, action: addB
dataType: 'json',
data: {
bName: $('#bName').val(),
bSomeProperty: $('#bSomeProperty').val(),
}
});
});
だから、質問は:どのように私は、現在のコントローラとアクションaddB
を指すURLを取得することができますか? Grailsは実際にはリンクを取得するためのメソッドを提供しているので、ハードコーディングや相対パスを使用したくはありません。
javascriptでremoteFunction
を使用するとjQueryが使用されていたため、私にとってはうまくいかなかった。どちらもうまく機能していないようです。
Grails、jQuery、AJAXについてのこのブログ記事(http://alexduan.com/2011/02/17/grails-jquery-and-ajax/)も見つかりました。彼はjavascriptの部分で変数を使います。残念ながら、contextPath
変数は解析されません.JavascriptはGSPページ内ではなく外部ファイルにあるためです。
どうすればよいですか?
オプション:
- (それは多少インラインなので、多少醜い)ページ内
g:javascript
タグでJavascriptのピースを入れ - は
- (非常に堅牢ではない)は、相対URLを使用
remoteFunction
を取得(jQueryのやり方は?) - 他に何か?
ありがとうございます!私は 'main.gsp'にグローバル変数を追加したので、他のすべてのJavascriptファイルで' contextPath'にアクセスし、コントローラとアクションへのパスを自分で構築することができます。 –