2016-11-07 2 views
0

Я отправил аналогичный вопрос, но поскольку переполнение стека заглохнет быстро, я чувствую, что не получил ответа.Передача переменной с успехом jquery

Иногда я не понимаю вещи, если это не сделано для моего кода. Люди склонны объяснять вещи действительно ужасно. Пример: How do I return the response from an asynchronous call?

В этом первом ответе он объясняет, как реструктурировать код. Однако он не объясняет шаги правильно. Он не объясняет, что такое обратный вызов или какой результат. Он просто бросает их туда. Я предполагаю, что он дает несколько примеров того, как это сделать, но он не объясняет, что использовать.

Ниже мой код, который у меня был изначально:

var admin_data = false; 
function getPlayerAdmin(admin_data){ 
    var formData = { 
     'player_id' : $('#post-v').attr('data-val') 
    }; 
    $.ajax({ 
     type: 'post', 
     url: '/popins/player/controls', 
     data : formData, 
     dataType : 'json', 
     success: function(admin_data_vals, admin_data) { 
      if(admin_data_vals.controls.is_admin == true){ 
       admin_data = true; 
      }else{ 
       admin_data = false; 
      } 
     }, 
     error : function(jqXHR, textStatus, errorThrown){ 
      console.log(jqXHR); 
     } 
    }); 
} 

getPlayerAdmin(); 
alert(admin_data); 

Ниже я попытался перестроиться на основе его ... Например:

var admin_data = false; 

var result = getPlayerAdmin(); 

getPlayerAdmin(function(result) { 
    if(admin_data_vals.controls.is_admin == true){ 
     admin_data = true; 
    }else{ 
     admin_data = false; 
    } 
}); 

function getPlayerAdmin(callback){ 
    var formData = { 
     'player_id' : $('#post-v').attr('data-val') 
    }; 
    $.ajax({ 
     type: 'post', 
     url: '/popins/player/controls', 
     data : formData, 
     dataType : 'json', 
     success: function(admin_data_vals, callback) { 

     }, 
     error : function(jqXHR, textStatus, errorThrown){ 
      console.log(jqXHR); 
     } 
    }); 
} 

getPlayerAdmin(); 
alert(admin_data); 

Я пытаюсь получить переменная отсюда, чтобы я мог использовать ее в другой функции.

Я так смущен, помощь очень ценится.

+0

Вы хотите поместить 'alert (admin_data);' в функцию обратного вызова и использовать его оттуда. И измените вашу функцию успеха: 'success: function (data) {callback (data)}' – nicovank

+0

Что такое функция обратного вызова? –

+0

Функция обратного вызова - это функция, которую вы передаете как параметр, вызывающий успех. – nicovank

ответ

0

Вы должны понимать, что некоторые люди учатся в школе или на работе, а не на весь день, когда они отвечают на вопросы людей, на которые, кроме прочего, можно легко ответить, изучив и изучив документацию.

Во всяком случае, вот полностью прокомментировал кусок кода:

function getData(callback) { // You pass a callback function as a parameter 
    var formData = { 
     'player_id' : $('#post-v').attr('data-val') 
    }; 
    $.ajax({ 
     type: 'post', 
     url: '/popins/player/controls', 
     data : formData, 
     dataType : 'json', // data passed in the success function will going to be parsed if you specify the `dataType`. 
     success: function(data) { 
      // on success, you call the callback function, passing the data you just got 
      callback(data); 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      // on error, just log the error. 
      console.log(errorThrown); 
     } 
    }); 
} 

getData(function(data) { // You are calling the `getData` function, passing another function as a parameter, which is going to get called on success 

    // This will log the object that you asked your server for. 
    console.log(data); 
}); 

Функция getData запрашивает сервер для передачи данных, а затем вызывает функцию, что вы передаете в качестве параметра, в этом случае анонимная функция. Вы можете легко просто позвонить getData, как это, делая в основном еще один шаг:

function analyseData(data) { 
    console.log(data); 
} 
getData(analyseData); 

Теперь, если у вас есть какие-либо дополнительные вопросы, пожалуйста, попросите их, но быть уважительным. SO люди не ваши сотрудники или учителя здесь, чтобы объяснить вам, как это и работает. Вы должны провести какое-то исследование самостоятельно. На этой заметке приятно провести вечер!

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