Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery Ajax,异步:false,返回未定义_Javascript_Jquery_Ajax - Fatal编程技术网

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