我需要从jQuery JSON调用访问外部局部变量,而不将该变量发送到服务器(因此不使用data参数):
for (var prop in channels) {
$.getJSON(url).done(function(json) {
channels[prop].value = ...;
});
}
不幸的是,随着外循环的继续,prop
可变的变化。
是否可以将变量绑定到getJSON调用?
答案 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 = ...;}
})
}