0

私は次の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ですが、もちろんこれは一時的なものです。ノーリターンタイプ(voidnullか何か他のものに行くべきですか?

jQueryのgetメソッドのデータ型パラメーターを変更できることに注意してください。

編集:

サーバー側のメソッドを次のように変更しました。

@RequestMapping(value = "/resendActivationEmail/{token}", method = RequestMethod.GET)
    public @ResponseBody void resendActivationEmail(@PathVariable("token") String token) {
        preferencesService.resendActivationEmail(token);
    }

@ResponseBodyこれはajax呼び出しであるため、が必要です。

4

2 に答える 2

1

サーバーからJSONを返していると仮定します(サーバーコードから:produces = "application / json")。

何が返されるかは気にしない、つまりコールバック関数で戻り値を処理していないので、$。getの後に「{}」を返すか、応答を処理する場合は次のようになります。次のようなもので:

{ "success": true }
// or
{ "error": "Error messages here" }
于 2013-02-22T16:51:34.007 に答える
1

この場合、ダミー値を返す意味はありません。戻り値で何もしていない場合は、次のようにすることができます。

@RequestMapping(value="/resendActivationEmail/{token}", method=RequestMethod.GET)
@ResponseStatus(org.springframework.http.HttpStatus.NO_CONTENT) 
public void resendActivationEmail(@PathVariable String token) {
  preferencesService.resendActivationEmail(token);
}

204の代わりに応答コードがありますが、それで200問題ありません。

于 2013-02-22T18:32:46.537 に答える