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,但当然这只是暂时的。我应该选择无返回类型(void)还是null其他?

请注意,我可以更改 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

在这种情况下,返回一个虚拟值是没有意义的。如果你没有对返回值做任何事情,那么你可以这样做:

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

会有一个204响应代码而不是 a200但这应该没问题。

于 2013-02-22T18:32:46.537 回答
1

我假设您从服务器返回 JSON(从您的服务器代码:produces = "application/json")。

由于您不关心返回什么,即您没有在回调函数中处理返回值,在 $.get 之后,那么您可以只返回“{}”,或者如果您想处理响应,您可以去有类似的东西:

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