Die Lösung ist eine Mischung aus e.preventDefault()
und Verwenden eines Rückrufs im Ajax-Aufruf.Die bloße Verwendung des Rückrufs hat das Problem nicht gelöst, sondern das Hinzufügen preventDefault
zum authenticate
Funktion und Behebung des Rückrufproblems hat funktioniert.
Die endgültige, funktionierende Version sieht nun etwa so aus:
define(["jQuery", "kendo", "modernizr", "app/environment"], function ($, kendo, modernizr, environment) {
function authenticate(username, password, callback) {
$.ajax({
url: environment.apiConnection + '/canlogin?userid=' + username + '&password=' + password,
type: 'get',
dataType: 'jsonp',
success: callback,
error: function (x,t,r) {
console.log('error')
}
});
}
function login(canLogin, username, password) {
if (canLogin == false) {
alert('Incorrect username or password');
return;
}
alert('good');
}
return {
viewModel: kendo.observable({
username: null,
password: null,
authenticate: function (e) {
e.preventDefault();
var username = this.get('username'),
password = this.get('password');
authenticate(username, password, function (canLogin) {
login(canLogin, username, password);
});
}
})
}
});