0

私はまだ JS に不慣れで、2 つの ajax リクエストを接続するのに問題があります。最初は簡単です:

fb にユーザー ID を尋ねます。

 FB.api('/me', function(user) {
          if (user) {
          }
        });

カスタム fb オブジェクトにカスタム facebook アクションを投稿します。

  function myfunction()
  {
      FB.api(
        '/me/fb:myaction',
        'post',
        { myobject: '/object/<%=@obj.id%>' },
        function(response) {
           if (!response || response.error) {
              console.log('Error occured');
           } else {
              console.log('FB POST was successful! Action ID: ' + response.id);
              $.ajax({
                type: "POST",
                url: "/record_action",
                data: { facebook_id: "John", item_id: "<%= @candidate.id %>" },
                dataType: 'json',
                success: function(data) {
                      console.log(data);
                   }
              }).done(function( msg ) {
                console.log(msg);
              });
           }
        });
  }

user.facebook_id を保存して myfunction() の呼び出しに渡すにはどうすればよいですか。次のようなものを試すと:

 FB.api('/me', function(user) {
          if (user) {
          myvar = user.facebook_id
          }
        });

myvar を myfunction 呼び出しに渡してみてください。機能しません。これは非常に些細なことだと確信しています。これはどのように行うことができますか?

4

1 に答える 1

0

より良い答えは、クロージャ(おそらく最初のクエリの成功関数)を使用してこの答えをキャプチャし、そのクロージャ内で残りの作業を行うことです。

あまり効果的ではありませんが(ただし、学習中はおそらくより実用的です)、2つの呼び出しの間にデータをグローバル変数に配置することです。ただし、JavaScriptのグローバル変数には無数の問題があり、ページで実行されているすべてのスクリプトを完全に制御できない場合は、疫病のように回避する必要があります。

于 2012-06-13T07:59:57.703 に答える