我正在尝试更改变量以进行验证,更改会在返回某些数据后在$.getJSON()
函数内发生。
问题是在链接变量之后,在$.getJSON()
之外,变量返回到其原始值。以下是该部分的代码:
var isValid = true;
// Validate Username
var un = $('#username').val();
if(un.length < 5) {
isValid = false;
$('#ins_username').html('').hide();
$('#msg_username').html('Please fill username, minium 5 Characters').show();
// to append to another msg
} else {
$.getJSON("validateUsername.action", {
'newStudent.users.username': $('#username').val()
},function(json) {
if ( json.jsonData.usernameFound == true ) {
isValid = false;
$('#ins_username').html('').hide();
$('#msg_username').html('Please change username, Username Taken.').show();
alert ("the isValid value inside the getJson() "+isValid);
// the isValid = false here as expected
alert ("JOSN from inside "+json);
} else {
$('#msg_username').html('').hide();
}
});
alert ("the isValid value outside the getJson() "+isValid);
// the isValid = true here, i want the changes to remain
}
我不确定我在这里错过了什么。
答案 0 :(得分:0)
success
函数是一个回调函数,这意味着它不会立即执行。最后的alert
评估并立即执行。当它执行时,回调没有机会更新isValid
的值,因此它仍然显示原始值。
更新:这是应该有助于解释此行为的jQuery documentation on the concept of a callback