2014-10-04 74 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