javascript - 如何在javascript中使用函数外定义的变量

标签 javascript jquery ajax

我有一个单信号 javascript 代码和一个 ajax 表单,可以在一个信号中为我提供用户的玩家 ID, 所以我想在我的ajax登录表单中使用此代码并将玩家ID添加到登录表单数据中,但我无法在一个信号函数中使用定义的变量,并且接收未定义的消息

OneSignal.push(function() {
        OneSignal.getUserId(function(userId) {
            var userid = userId;
        });
    });

    var options = {
        url: "{{CONFIG ajax_url}}/auth/login?hash_id=" + getHashID(),
        beforeSubmit:  function () {
            $('#output-errors').empty();
            $("#btn-submit").text("{{LANG Please wait..}}");
        }, 
        success: function (data) {
            $("#btn-submit").text("{{LANG Login}}");
            if (data.status == 200) {
                if ($('#page').attr('data-page') != 'home' && $('#page').attr('data-page') != 'forgot' && $('#page').attr('data-page') != 'reset') {
                    $('#main-header').html(data.header);
                    $('#login_box').modal('hide');
                    if (Amplitude.getActiveSongMetadata().price >= 0) {
                        location.href = window.location.href;
                    } else {
                        ajaxRedirect();
                    }
                } else {
                    location.href = window.location.href;
                }
            } else if (data.status == 400) {
                var errros = data.errors.join("<br>");
                $('#output-errors').html(errros);
            }
        },
        // here i add the one signal id
        data: {
            OSid: userid
        }
    };
    $('#login-form').ajaxForm(options);

最佳答案

有几种方法可以解决这个问题,这是一种方法:

OneSignal.push(function() {
    OneSignal.getUserId(doAjax);
});

function doAjax(userId) {
    var options = {
        url: "{{CONFIG ajax_url}}/auth/login?hash_id=" + getHashID(),
        beforeSubmit:  function () {
            $('#output-errors').empty()
        ...
    }

    $('#login-form').ajaxForm(options);
}

函数 OneSignal.getUserId() 采用函数作为参数,因此我的解决方案声明了一个函数 doAjax ,它将采用 userId 作为参数,然后我们将该函数传递给 getUserId 函数。

关于javascript - 如何在javascript中使用函数外定义的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58565779/

相关文章:

javascript - PDFMAKE:如何重复 'content' 中的数组 [ ] 项

javascript - react 原生 - 屏幕底部被切断

javascript - 在javascript中将rgba颜色值转换为0xFFFFFFFF形式

ul#navigation li 上的 jquery hasClass "active"页面加载不起作用

javascript - Contenteditable 在子节点上设置插入符号

jquery - 向元素添加动态类

javascript - 将文本限制为一定数量的字符,忽略 HTML 标签/属性

javascript - JQuery 滚动操作重复了结果

javascript - 向通过 AJAX 添加到 DOM 的对象添加事件监听器

javascript - jquery 中的多个显示/隐藏表单