2016-11-07 44 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);'在回調函數中,並從那裏使用它。並改變你的成功函數:'成功:函數(數據){回調(數據)}' – 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); 

現在,如果你有任何疑問,請讓他們,但要尊重。所以人們不是你的員工或老師來解釋你是如何做到這一點的。你應該自己做一些研究。 在這個筆記上,祝你有個愉快的夜晚!