Javascript jQuery Ajax,异步:false,返回未定义
我有这个功能:Javascript jQuery Ajax,异步:false,返回未定义,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有这个功能: GetMessage: function (code) { var msg = localStorage.getItem(code); if (msg == null || msg == 'undefined') { $.ajax({ type: 'GET', url: CTHelper.ApiUrl() + '/Api/
GetMessage: function (code) {
var msg = localStorage.getItem(code);
if (msg == null || msg == 'undefined') {
$.ajax({
type: 'GET',
url: CTHelper.ApiUrl() + '/Api/Case/GetMessage?code=' + code,
async : false,
success: function (result) {
localStorage.setItem(code, result);
return result;
},
error: function (result) {
return '';
}
});
}
else {
return msg;
}
},
第一次调用它时,它会转到服务器($.ajax)并在localStorage中存储一个值,因此第二次等调用会从缓存/存储中获取该值
现在,它一直运行良好,但第一次调用时,似乎success函数中的返回结果总是未定义的
我认为设置async:false可以解决这个问题,但事实并非如此
下面的图片说明了我的问题
两个回调函数
success
和error
中的return语句不返回您的GetMessage
函数-它们从回调返回。如果希望函数返回正确的消息,请将结果分配给msg,并始终在GetMessage
末尾返回:
GetMessage: function(code) {
var msg = localStorage.getItem(code);
if (msg == null || msg == 'undefined') {
$.ajax({
type: 'GET',
url: CTHelper.ApiUrl() + '/Api/Case/GetMessage?code=' + code,
async: false,
success: function(result) {
localStorage.setItem(code, result);
msg = result;
},
error: function(result) {
msg = '';
}
});
}
return msg;
},
请参见下面的结果
两个回调函数
success
和error
中的return语句不返回您的GetMessage
函数-它们从回调返回。如果希望函数返回正确的消息,请将结果分配给msg,并始终在GetMessage
末尾返回:
GetMessage: function(code) {
var msg = localStorage.getItem(code);
if (msg == null || msg == 'undefined') {
$.ajax({
type: 'GET',
url: CTHelper.ApiUrl() + '/Api/Case/GetMessage?code=' + code,
async: false,
success: function(result) {
localStorage.setItem(code, result);
msg = result;
},
error: function(result) {
msg = '';
}
});
}
return msg;
},
请参见下面的结果
看这个:看这个:优秀的答案,非常有帮助的+1优秀的答案,非常有帮助的+1