我在 jQuery 中编写了这个函数:
function checkAvailability(value) {
var result = true;
$.getJSON("registration/availability", { username: value }, function(availability) {
if (!availability)
result = false;
alert("in getJSON: " + result);
});
alert(result);
return result;
}
在这一秒之后,我收到了来自“getJSON”的警报。为什么会这样?
我有检查用户名可用性的 Spring MVC 项目和 Controller 方法。控制器方法正常工作。但我收到最终结果为时已晚。如何同步它以在我的函数中正确返回值?
编辑
我在 jQuery 验证中使用这个函数。我checkAvailability()
在测试期间提取了函数。
$.validator.addMethod("checkAvailability", function(value, element, param) {
var das = checkAvailability(value);
return das;
}, jQuery.format("Someone already has that username. Please try another one."));
这是我的表单验证:
$(".form").validate({
rules: {
username: {
checkAvailability: true
},
....
},
messages: {
}
});
编辑 2
这是我的控制器方法。它返回布尔值。如果使用用户名,它将返回错误值。
@RequestMapping(value="/registration/availability", method = RequestMethod.POST)
public @ResponseBody boolean getAvailability(@RequestParam String username) {
List<User> users = getAllUsers();
for (User user : users) {
if (user.getUsername().equals(username)) {
return false;
}
}
return true;
}