连接两个Ajax请求

时间:2012-06-13 07:38:32

标签: javascript ajax function callback facebook-javascript-sdk

我还是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调用它不起作用。我确信这是非常微不足道的。怎么办呢?

1 个答案:

答案 0 :(得分:0)

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

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