<分区>
我需要将外部变量传递给 jQuery Ajax 的成功函数。我的 ajax 是这样循环的:
var props = ['a', 'b', 'c'];
var results =
{
a: null,
b: null,
c: null
};
for(var key in props)
{
var prop = props[key];
$.ajax(
{
url: 'someurl',
data:
{
somedata: 'somevalue'
},
success: function(data, status, xhr)
{
// This here does not work properly, because the prop's value changes
// Due to promise stuff
results[prop] = data;
}
});
}
我需要将成功返回的数据填充到正确的位置,但上面的实现不起作用,因为 prop
的值在调用成功之前发生了变化。
我发现我可以通过像这样将成功函数的 this 与 prop 绑定(bind)来“绕过”这个问题:
success: function(data, status, xhr)
{
results[this] = data;
}.bind(prop)
但这似乎不是一个好主意,此外,我只能绑定(bind)一个变量,如果需要则不能绑定(bind)多个。
这似乎也不起作用:
success: function(data, status, xhr)
{
var privprop = prop;
results[privprop] = data;
}
那么基本上什么是给每个成功回调一个“私有(private)”变量的最好方法,哪个值是整个 ajax 制作时 prop 的值?我能否以某种方式绑定(bind)多个变量并覆盖 this
以外的内容?