jQuery безопасно ли повторять $ .get ()? - PullRequest
1 голос
/ 31 августа 2011

У меня проблема с привязкой выпадающих меню. Я думаю, что проблема в обратном вызове в моем $.get(). Это небезопасно выполнять попадает в цикл? Е.Г.

//on document ready
var stateOneOrTwo = "stateOne";
for(var i = 0; i < 2; i++){
   if(i === 1)
       stateOneOrTwo = "stateTwo";

   $.get(url,{},function(data) {
    var dropdown = stateOneOrTwo;
    $(dropdown).append(/*options*/);
   , 'json')};
}

<ч /> Это кажется небезопасным. Я выбросил СУХИЕ принципы в окно. Когда я копирую, вставляю код и просто меняю имена переменных, у меня не возникает никаких проблем. Я оставлю вопрос открытым для конкретного ответа.

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Проблема в том, что вы изменяете stateOneOrTwo до возвращения XHR, поэтому оба обратных вызова будут работать с stateOneOrTwo, равным "stateTwo". Если вы просто звоните get дважды, вам не нужен цикл.

$.get(url,{},function(data) {
    var dropdown = "stateOne";
    $(dropdown).append(/*options*/);
}, 'json');

$.get(url,{},function(data) {
    var dropdown = "stateTwo";
    $(dropdown).append(/*options*/);
}, 'json');
1 голос
/ 31 августа 2011

Я не совсем уверен, произойдет ли сбой $.get, если вы вызовете новый до его завершения, однако более безопасный (и правильный) подход заключается в использовании рекурсивных функций, чтобы убедиться, что запрос завершен перед отправкой. следующий.

...