Хорошо, Рори указал мне направление обратного вызова для моего вчерашнего вопроса.Я попробовал несколько разных вариантов и, по крайней мере, получил переменную JavaScript от undefined
до [object] [object]
, которая размещена здесь до getCallBack.toString()
, которая тоже не работает.Поэтому мой вопрос заключается в том, что я пытаюсь использовать область сеанса в ColdFusion для предварительного назначения значений выбора с помощью асинхронных вызовов AJAX.Значения отображаются в консоли правильно, но при попытке присвоить значение переменной JavaScript возвращается [object] [object]
.Может кто-нибудь просмотреть это и сказать мне, что я делаю неправильно?
здесь есть функция обратного вызова;
function getCallBack(data) {
// console.table(data);
console.log('callback handler: ' + data);
return data;
}
здесь есть асинхронный вызов;
jgetValue = function(a) {
return $.ajax({
url: "cfc/SessionMgr.cfc",
type: "get",
//async: false,
dataType: "json",
data: {
method: "jgetValue",
variablename: a
},
error: function(msg) {
console.log(msg);
}
});
}
ипеременная, которую я пытаюсь установить, либо с .toString()
, либо без него, возвращает то же значение;
var sel = jgetValue('ReportsShowAll').done(getCallBack.toString());
, поэтому я пересмотрел код с невероятно полезным комментарием Алекса и переписал его к этому;
function getCallBack(data) {
console.log('callback handler: ' + data);
return data;
}
jgetValue = function(a) {
return $.ajax({
url: "cfc/SessionMgr.cfc",
type: "get",
dataType: "json",
data: {
method: "jgetValue",
variablename: a
},
error: function(msg) {
console.log(msg);
}
});
}
getter = function(a) {
jgetValue(a).done(getCallBack);
}
console.log('getter for ReportsShowAll: ' + getter('ReportsShowAll'));
и консоль записывает это в следующем порядке, кажется, что 'getter' все еще заканчивает работу до вызова json;
getter for ReportsShowAll: undefined
callback handler: 1
любой с умным ответом, почему это произойдет?любая помощь будет оценена.