-2

可能重复:
如何返回 AJAX 响应文本?
变量未返回 JQuery
AJAX 未更新变量

我对此代码有疑问:

/**
 * facebook Object*/
var fbObject = new Object();


/**
 * Function to get login status
 * @returns boolean Logged in status
 * */
fbObject.getLoginStatus = function() {
    FB.getLoginStatus(function(response) {
        if (response.status == 'connected') {
              console.log('logged in');
              return true;
            } else {
              console.log('not logged in');
              return false;
            }
    });
}

var status = fbObject.getLoginStatus();

    alert('Status: '+ status);

我的问题是 getLoginStatus 方法没有返回值。

4

3 回答 3

0

该方法是异步的,您以同步方式使用它。在回调函数中返回值是不可能的。

于 2012-12-19T14:08:27.020 回答
0

该函数是异步的,

我要做的是在实际回调中运行“回调代码”:

    fbObject.getLoginStatus = function() {
    FB.getLoginStatus(function(response) {
        if (response.status == 'connected') {
              console.log('logged in');
              alert('Status: '+ true);
            } else {
              console.log('not logged in');
              alert('Status: '+ false);
            }
    });
}

或将回调传递给函数,或停止,直到函数返回。

于 2012-12-19T14:09:45.380 回答
0

你需要一个回调

Ajax 请求不返回任何内容,它们是异步的。


尝试这个:

var status = function(s){
    alert('Status: '+ s);
};

/**
 * Function to get login status
 * @returns boolean Logged in status
 * */
fbObject.getLoginStatus = function() {
    FB.getLoginStatus(function(response) {
        if (response.status == 'connected') {
           console.log('logged in');
           status(true);
         } else {
           console.log('not logged in');
           status(false);
         }
    });
}
于 2012-12-19T14:08:07.210 回答