我有一个单信号 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/