我通过JS lint运行此脚本...当我尝试执行sendLogin()
时,控制台返回它尚未定义。为什么呢?
<script>
$(document).ready(function(){
$('#register-fields').hide();
function reCenter(){
$('.login-window').center($('.wrapper'));
}
$('.login-window').center($('.wrapper'));
$(window).resize(reCenter);
var creds = new Object();
function popLogCreds(creds){
creds.username = $("#username-field").val();
creds.password = $("#password-field").val();
}
function sendLogin(){
popLogCreds();
var loginCredentials= {
"username":creds.username,
"password":creds.password };
request = $.ajax({
url: "http://127.0.0.1:8080/login",
type: "POST",
crossDomain: true,
data: loginCredentials,
dataType: "json"
});
request.always(function(data) {
console.log(data);
var ParsedData = jQuery.parseJSON(data);
sessionStorage.username=ParsedData.username;
sessionStorage.password=ParsedData.password;
sessionStorage.fname=ParsedData.fname;
sessionStorage.lname=ParsedData.lname;
sessionStorage.rank=ParsedData.rank;
});
}
});
</script>
答案 0 :(得分:0)
你应该把sendlogin()函数放在document.ready()
之外。然后,您可以从$(document).ready
答案 1 :(得分:0)
您已在sendLogin()
中定义了document.ready
,它已成为范围,无法从全局范围调用。定义sendLogin
外document.ready
,当您从popLogCreds
调用sendLogin
时,您应该popLogCreds
定义文档的一侧。已经按照@Quentin的指示< / p>
答案 2 :(得分:0)
您已使用另一个函数内部的函数声明(您传递给ready()
作为参数的匿名函数)定义了它。函数声明是本地范围的,因此它不是全局的。
只有在全局范围内,才能从控制台调用它。
您可以使用以下命令将其复制到全局范围:
window.sendLogin = sendLogin;
或者,将它(以及它所调用的任何函数也是本地范围的,以此类推)移动到全局范围(即在所有其他函数之外)。