2

その変数をサーバーに送信せずに、jQuery JSON 呼び出しから外部のローカル変数にアクセスする必要があります (したがって、data パラメーターを使用しません)。

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

残念ながら、prop外側のループが続くと変数が変化します。

変数を getJSON 呼び出しにバインドすることは可能ですか?

4

2 に答える 2

3

OK、 jQueryのプロキシ関数に基づいて答えを見つけました:

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

基本的に$.proxy()、追加のパラメーターを受け取るラッパー関数を作成し、contextそれがラップされた関数として渡されるthisようにします。

于 2013-05-06T10:52:38.213 に答える
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 = ...;}
        })
}
于 2017-06-28T13:58:52.387 に答える