2014-10-04 93 views
-2

我想在我的getJSON函數中使用一個變量。我怎麼能通過它?這是我試過的。JS/JQ:來自內聯函數的訪問變量

function getComments(parent_id) { 
    if(typeof(parent_id)==='undefined') parent_id = -1; 
    console.log("parent_id type: " + typeof(parent_id)); // parent_id type: number 
    var message = { parentMessageID: parent_id }; 
    $.getJSON(UPDATECOMMENTCALL, message, function(data, parent_id) { 
     console.log("JSON parent_id: " + typeof(parent_id)); // JSON parent_id: string 
    } 
} 

相反PARENT_ID存在-1的功能裏面,它與價值「成功」的字符串。我如何正確傳遞它?

+1

您的變量已經是_global_,所以您應該可以在'.getJSON'調用中訪問它。 – melancia 2014-10-04 22:11:25

+0

這一切都發生在一個函數內部。我會添加更多的代碼。 – Qaz 2014-10-04 22:13:01

回答

0

你可以直接使用它,不要把它作爲參數放在getJSON的回調函數中,只是用它作爲變量,因爲它已經是全局的了。

+0

哇,upvoted /接受了複製@MelanciaUK在評論中所說的和我在我的回答中詳細描述的答案......有正義。 – Shomz 2014-10-04 22:23:22

0

您的回調函數參數的優先級高於具有相同名稱的作用域變量(parent_id)。所以通過在回調函數中訪問它,實際上是指函數參數,而不是你在函數之外定義的變量。更改回調變量的名稱將修復它。例如:

var parent_id = -1;  
console.log("parent_id type: " + typeof(parent_id)); // parent_id type: number 
var message = { parentMessageID: parent_id }; 
$.getJSON(UPDATECOMMENTCALL, message, function(data, p_id) { // changed to p_id 
    console.log("JSON parent_id: " + typeof(parent_id)); // JSON parent_id: string 
} 

通常,最好避免使用相同的名稱,以避免所有重複的名稱混亂。


簡單的例子來告訴你這是怎麼回事:

var a = 1; 
function f(a) { 
    console.log(a); 
} 

認爲什麼是f(2);輸出。

+1

@MelanciaUK可能,問題並不是最清楚的。但我認爲OP想要訪問回調中的原始parent_id。 – Shomz 2014-10-04 22:17:25