объем jQuery или состояние состязания в AJAX/getJSON

Итак, после прочтения, решение заключается в использовании метода update при создании кнопок.

layoutButtons = list([
                dict(type="buttons",
                     active=-1,
                     buttons=list([   
                        dict(label = 'Label:On',
                             method = 'update',
                             args = [{'visible': [True, True, True, True]},{'annotations':layoutAnnotationList}]
                             ),
                        dict(label = 'Label:Off',
                             method = 'update',
                             args = [{'visible':[True, True, False, False]},{'annotations':[]}]
                             ),
                            ]
                        )
                     )
                ]   
            )

У меня есть идея из здесь . Все еще не знаю, как интерпретировать словарь {'visible':[True, True, False, False]} внутри аргументов, но он работает.

9
задан slim 14 January 2009 в 22:05
поделиться

2 ответа

Кажется, что обзор выходит из-за цикла. Попробуйте это:

var table = $("table#output");
for (var i in items) {
    var thisItem = items[i];
    $.getJSON("myService", { "itemID": thisItem }, (function(thisItem) {
        return function(json) {
            var str = "<tr>";
            str += "<td>" + thisItem + "</td>";
            str += "<td>" + json.someMember + "</td>";
            str += "</tr>";
            table.append(str);
        }
    })(thisItem));
}

Править: все, что я сделал, было определить объем thisItem к $.getJSON обратный вызов.

12
ответ дан 4 December 2019 в 13:50
поделиться

JavaScript не использует блок для объема. Объем только основан на функциях.

Если Вы хотите новый объем, необходимо объявить новую внутреннюю функцию и сразу выполнить ее, это - единственный способ создать новый объем в JavaScript.

var table = $("table#output");
for( var i in items ) 
{
    (function(){
        var thisItem = items[i];
        $.getJSON("myService", { "itemID": thisItem }, function(json) 
        {
            var str = "<tr>";
            str += "<td>" + thisItem + "</td>";
            str += "<td>" + json.someMember + "</td>";
            str += "</tr>";
            table.append(str);
        });
    })();
}
3
ответ дан 4 December 2019 в 13:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: