-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

コールバックが必要です

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 に答える
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 に答える