0

Я еще новичок в JS: и у меня возникли проблемы с подключением двух запросов ajax. Первый прост:Подключение двух запросов Ajax

спросить FB для идентификатора пользователя:

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

сообщения обычая facebook действие на объекте пользовательского фба:

function myfunction() 
    { 
     FB.api(
     '/me/fb:myaction', 
     'post', 
     { myobject: '/object/<%[email protected]%>' }, 
     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, это не работает. Я уверен, что это тривиально. Как это может быть сделано?

+0

Что конкретно означает *, похоже, не работает * ...? – McGarnagle

+0

есть. ха. Точно не работает. –

ответ

0

Лучший ответ - использовать закрытие (возможно, функцию успеха первого запроса), чтобы зафиксировать этот ответ и выполнить остальную часть работы внутри этого закрытия.

Менее эффективным (но, возможно, более прагматичным, пока вы учитесь) является перенос данных в глобальную переменную между двумя вызовами. В JavaScript существует множество проблем с глобальными переменными, и их следует избегать, как чуму, если вы когда-либо не полностью контролируете все сценарии, запущенные на странице.

Смежные вопросы