2014-10-04 2 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 внутри функции, это строка со значением «success». Как я могу передать его правильно?

+1

Ваша переменная уже _global_, поэтому вы должны иметь доступ к ней в вызове '.getJSON'. – melancia

+0

Все это происходит внутри функции. Я добавлю еще немного кода. – Qaz

ответ

0

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

+0

Ничего себе, одобрил/принял ответ, который скопировал то, что @MelanciaUK сказал в комментариях и что я подробно описал в своем ответе ... есть справедливость. – Shomz

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

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