Hi i know this is an old question, but here's a result that doesn't use SPServices:
Note that this answer is inspired from this post
The method to get the manager of a user by user_email:
function getManagerOfUser(user_email, onComplete) {
SP.SOD.executeOrDelayUntilScriptLoaded(function () {
// Create the client context and get the PeopleManager instance.
var clientContext = SP.ClientContext.get_current();
var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);
// Get user profile properties for the target user.
// Specify the properties to retrieve and create the UserProfilePropertiesForUser object.
// Then get the requested properties by using the getUserProfilePropertiesFor method.
var profilePropertyNames = ["Manager"];
var userProfilePropertiesForUser = new SP.UserProfiles.UserProfilePropertiesForUser(clientContext,
"i:0#.f|membership|" + user_email,
profilePropertyNames);
var userProfileProps = peopleManager.getUserProfilePropertiesFor(userProfilePropertiesForUser);
clientContext.load(userProfilePropertiesForUser);
clientContext.executeQueryAsync(function () {
if (userProfileProps[0]) {
var user = clientContext.get_web().ensureUser(userProfileProps[0]);
clientContext.load(user);
clientContext.executeQueryAsync(function () {
onComplete(user);
}, function (sender, args) {
console.log(args);
});
} else {
onComplete(null);
}
}, function (sender, args) {
console.log(args);
});
}, 'SP.UserProfiles.js');
}
To use the code:
getManagerOfUser("me@mydomain.com", function (result) {
console.log(result.get_title());
});
Note that the result is of type SP.User