我已经通过 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>
最佳答案
您已使用另一个函数(作为参数传递给 ready()
的匿名函数)内的函数声明来定义它。函数声明是局部作用域的,因此它不是全局的。
只有当它是全局的时,从控制台调用它才有效。
您可以使用以下方法将其复制到全局范围:
window.sendLogin = sendLogin;
或者,将其(以及它调用的也属于本地作用域的任何函数,依此类推)移动到全局作用域(即所有其他函数之外)。
关于javascript - 未定义简单函数。没有看到任何语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22234494/