我在ColdFusion中使用会话范围,并创建了一个AJAX设置器和获取器。当我为getter调用jQuery函数时,我得到了undefined
,但是在jQuery调用中,我写入了控制台,并且值是正确的。我已经在AJAX中尝试过async: false
,但无济于事。
我正在构建链接的选择对象的复杂级联,并且在重新加载级联时需要它们默认返回到最后选择的值。有人遇到过这个吗?我已经阅读了在StackOverflow上可以找到的所有内容,但仍无法解决,请参见下面的代码示例
GET和POST的AJAX类型,AJAX async: false
,sessionManager
以及我在这里找到的几乎所有其他内容。
默认为session.ReportsShowAll = 1
,但可以更改,因此我使用jgetValue()
来获取最新值,并在创建select时将selected选项设置为当前的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');