0

我还是 JS 的新手:我在连接两个 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

更好的答案是使用闭包(可能是第一个查询的成功函数)来捕获这个答案,并在该闭包内完成其余的工作。

不太有效(但在您学习时可能更实用)是将数据放在两个调用之间的全局变量中。但是,JavaScript 中的全局变量存在无数问题,如果您不打算完全控制页面上运行的所有脚本,就应该像瘟疫一样避免这些问题。

于 2012-06-13T07:59:57.703 回答