javascript - 未定义简单函数。没有看到任何语法错误

标签 javascript jquery

我已经通过 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/

相关文章:

javascript - 如何使用 Python 发送对 POST 请求的响应?

javascript - Ember.js 中按钮的绑定(bind)启用状态

javascript - 如何在已选中的表中设置复选框?

javascript - 动画递增数字并显示十进制值

javascript - 使用 jquery 填充选择选项失败

javascript - 如何设置为 100% 和重置为 0% 进度条

javascript - (JS) 如何从数组中获取随机值(不是长度,因为键......!)

javascript - 正则表达式只允许在开头有一个 + 号,然后是数字

jQuery:检查字符是否在字符串中

javascript - 使用 ENTER 提交表单与单击提交按钮时的不同行为