jQuery отсрочка асинхронного обратного вызова, возвращающая [объект] [объект], но консоль показывает значение - PullRequest
0 голосов
/ 29 мая 2019

Хорошо, Рори указал мне направление обратного вызова для моего вчерашнего вопроса.Я попробовал несколько разных вариантов и, по крайней мере, получил переменную 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

любой с умным ответом, почему это произойдет?любая помощь будет оценена.

...