2
我需要將外部變量傳遞給jQuery Ajax的成功函數。我的AJAX是在一個循環中,像這樣:我可以爲某個函數綁定「this」以外的其他東西嗎?
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
變化值被調用。
我發現我可以「繞過」這個問題通過綁定成功,函數的這個與道具,像這樣:
success: function(data, status, xhr)
{
results[this] = data;
}.bind(prop)
但是,這似乎是一個非常好的主意不和之外,我可以只綁定一個變量,如果需要的話不是多個。
這似乎並不工作之一:
success: function(data, status, xhr)
{
var privprop = prop;
results[privprop] = data;
}
所以基本上是給每個成功回調「私有」變量的最佳方式,該值是什麼道具的價值是當整個AJAX被做了?我可以以某種方式綁定多個變量並覆蓋this
以外的東西嗎?
打我吧,http://jsfiddle.net/nyq01ysk/。 –
是的.. @RoryMcCrossan – void
你可以談談:你正在使用的技術名稱是什麼:'(function(prop){..........})(prop)' –