2

ログイン後、ユーザーが Facebook ページのファンでない場合に戻ろうとしていますが、結果は常に「未定義」です。しかし、「return」を「alert」に置き換えると、完全に機能します。

function pageFan()
{
    FB.api({ method: 'pages.isFan', page_id: '175625039138809' }, function(response) {
        showAlert(response);
    });
}

function showAlert(response)
{
    if (response == true) {  
        return 'like the Application.';
    } else {
        return "doesn't like the Application.";
    }
}

var like = pageFan();
document.getElementById('debug').innerHTML = like; //return undefined
4

2 に答える 2

1

この質問はすでに回答されています。

関連する Javascript:

$(document).ready(function(){
      FB.login(function(response) {
      if (response.session) {

          var user_id = response.session.uid;
          var page_id = "40796308305"; //coca cola
          var fql_query = "SELECT uid FROM page_fan WHERE page_id = "+page_id+"and uid="+user_id;
          var the_query = FB.Data.query(fql_query);

          the_query.wait(function(rows) {

              if (rows.length == 1 && rows[0].uid == user_id) {
                  $("#container_like").show();

                  //here you could also do some ajax and get the content for a "liker" instead of simply showing a hidden div in the page.

              } else {
                  $("#container_notlike").show();
                  //and here you could get the content for a non liker in ajax...
              }
          });


      } else {
        // user is not logged in
      }
    });
于 2012-04-26T17:26:57.953 に答える
0

これは、returninshowAlertが関数の「中に」返されていないためpageFanです。関数はコールバックとして渡されます。showAlertつまり、後でpageFanの実行の外で呼び出されます。コールバック関数と非同期プログラミングについてもっと読む必要があると思います。

function showAlert(response)
{
    if (response == true) {  
        document.getElementById('debug').innerHTML = 'like the Application.';
    } else {
        document.getElementById('debug').innerHTML = "doesn't like the Application.";
    }
}
于 2012-04-26T17:27:39.210 に答える