私は次のjQueryスクリプトを持っています:
$(document).ready(function() {
$("#resendActivationEmailLink").bind("click", function(event) {
$.get($(this).attr("href"), function() {
$("#emailNotActivated").html("<span>not yet activated. email sent!</span>");
}, "html");
event.preventDefault();
});
});
基本的に、ユーザーがリンクをクリックすると、次のサーバー側メソッドが呼び出されます。
@RequestMapping(value = "/resendActivationEmail/{token}", method = RequestMethod.GET, produces = "application/json")
public @ResponseBody
String resendActivationEmail(@PathVariable("token") String token) {
preferencesService.resendActivationEmail(token);
return "dummy";
}
一部のビジネスロジックはサーバー上で実行されますが、ajaxの成功またはajaxの失敗を除いて、クライアント/ブラウザー側で使用されるサーバーからの実際の結果はありません。
今、私が本当によくわからないのは、サーバー側のメソッドが何を返すことになっているのかということです。
現在は文字列を返すだけdummy
ですが、もちろんこれは一時的なものです。ノーリターンタイプ(void
)null
か何か他のものに行くべきですか?
jQueryのgetメソッドのデータ型パラメーターを変更できることに注意してください。
編集:
サーバー側のメソッドを次のように変更しました。
@RequestMapping(value = "/resendActivationEmail/{token}", method = RequestMethod.GET)
public @ResponseBody void resendActivationEmail(@PathVariable("token") String token) {
preferencesService.resendActivationEmail(token);
}
@ResponseBody
これはajax呼び出しであるため、が必要です。