Функция Javascript, возвращающая объект сеанса - PullRequest
1 голос
/ 24 февраля 2012

Это простой скрипт для извлечения сеанса 'CouchDB' и получения информации о пользователе. Он использует файл couch.j, который использует jQuery. Некоторое время я использую JavaScript, но не могу понять, как передать возвращаемые значения и затем использовать их.

$(document).ready(function () {
  this.ctx = getCtx(); //it doesn’t appear that this is actually assigning a variable
  console.log(this.ctx);   //this returns “undefined”
});

function getCtx(){

     $.couch.session({
        async: false,
        success: function(r) {

              ctx = r.userCtx;
              if (ctx != null){ //I added this check because otherwise ctx was returning undefined.

                    console.log("returning ctx: "+ctx);   
//Log says: returning ctx: [object Object]
                    return ctx;                           
//I know this is returning an object, because of the line above

              }
        }
  });
};

Что еще больше озадачивает меня, так это то, что оператор console.log в функции $(document).ready возвращает значение undefined до того, как возвращается оператор console.log в функции getCtx(). Это означает, что он не дает getCtx() времени для выполнения и фактического получения сеанса.

Ответы [ 3 ]

2 голосов
/ 24 февраля 2012

Вы можете переместить назначение в функцию успеха вызова AJAX следующим образом:

$(document).ready(function () {
  getCtx(this);    
});

function getCtx(obj){

     $.couch.session({
        async: false,
        success: function(r) {

              ctx = r.userCtx;
              if (ctx != null){           

                    console.log("returning ctx: "+ctx);   
                    obj.ctx = ctx;                           

              }
        }
  });
};
1 голос
/ 24 февраля 2012

Вам нужно назначить ctx var внутри функции успеха вместо того, чтобы возвращать значение

0 голосов
/ 24 февраля 2012

Попробуйте:

$(document).ready(function () {
  var ctx = getCtx();
  console.log(ctx);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...