如何将变量绑定到jQuery getJSON调用?

时间:2013-05-06 09:59:31

标签: jquery getjson

我需要从jQuery JSON调用访问外部局部变量,而不将该变量发送到服务器(因此不使用data参数):

for (var prop in channels) {
    $.getJSON(url).done(function(json) {
        channels[prop].value = ...;
    });
}

不幸的是,随着外循环的继续,prop可变的变化。

是否可以将变量绑定到getJSON调用?

2 个答案:

答案 0 :(得分:3)

好的,根据jQuery's proxy function找到答案:

for (var prop in channels) { 
    $.getJSON(url).done(
        $.proxy(function(json) { 
            channels[this._prop].value = ...; 
        }, {_prop: prop}
    ); 
}

基本上,$.proxy()创建一个包装函数,该函数接受额外的context参数,并确保将其作为this传递给包装函数。

答案 1 :(得分:0)

用于js:bind:

for (var prop in channels) {
    $.getJSON(url).done(function(json) {
        channels[this].value = ...;
    }.bind(prop));
}

使用$ .ajax上下文:

for (var prop in channels) {
    $.ajax({
        url: url, 
        dataType: 'json', 
        context: param, 
        success: function(data) {
            channels[this].value = ...;}
        })
}