Я использую область сеанса в ColdFusion и создал установщик и получатель AJAX. Когда я вызываю функцию jQuery для получателя, я получаю undefined
, но внутри вызова jQuery я пишу в консоль, и значения верны. Я пробовал async: false
в AJAX безрезультатно.
Я строю сложный каскад связанных объектов выбора, и мне нужно, чтобы они по умолчанию возвращались к последним выбранным значениям при перезагрузке каскада. Кто-нибудь сталкивался с этим? Я прочитал все, что могу найти в StackOverflow и не смог решить эту проблему, см. Пример кода ниже
AJAX-типы GET против POST, AJAX async: false
, sessionManager
и почти все остальное, что я нашел здесь.
По умолчанию session.ReportsShowAll = 1
, но может измениться, поэтому я использую jgetValue()
, чтобы получить самое последнее значение, и при создании выбора установите выбранную опцию на значение session.ReportsShowAll
, которое есть в данный момент. Эта логика заполняется в различных областях, но я устраняю неполадки в одном экземпляре, который можно предсказать в другом месте.
Вызов AJAX записывает в консоль:
jgetValue: ReportsShowAll value: "1"
Однако настройка var sel
получает undefined
.
jgetValue = function(a) {
$.ajax({
url: "cfc/SessionMgr.cfc",
type: "get",
//async: false,
dataType: "text",
data: {
method: "jgetValue",
variablename: a
},
success: function(response) {
console.log('jgetValue: ' + a + ' value: ' + response);
return response;
},
error: function(msg) {
console.log(msg);
}
});
}
здесь - модифицированная система обратного вызова, написанная в соответствии с дублирующим потоком.
getter = function(a) {
var callback = jgetValue(a);
return callback;
}
function getCallBack(response) {
console.log('callback handler: ' + response);
return response;
}
обработчик обратного вызова: "1"
jgetValue = function(a) {
$.ajax({
url: "cfc/SessionMgr.cfc",
type: "get",
//async: false,
dataType: "text",
data: {
method: "jgetValue",
variablename: a
},
success: getCallBack //function(response) {
//console.log('jgetValue: ' + a + ' value: ' + response);
// getCallBack();
//return response;
//}
,
error: function(msg) {
console.log(msg);
}
});
}
оба метода до асинхронного вызова и после вызова все еще не устанавливают значение для объекта javascript, все еще считают его неопределенным.
var sel = jgetValue('ReportsShowAll');