Динамическое обновление определенного контейнера с помощью обновления AJAX - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть список Div в моем коде

<div id="results">
    <div id="div1"></div>
    <div id="div2"></div>
    <div id="div3"></div>
</div>

Через JavaScript у меня есть Ajax.Updater, который будет загружать результаты из действия.В зависимости от выбора, который пользователь делает из выпадающего списка с несколькими выборами, средство обновления будет вызываться много раз и помещать результаты в соответствующий тег Div (1, 2 или 3 в зависимости от значения выпадающего списка).

function loadData(){
var selections = ($(dropDown).selectedOptions);
for(var i=0; i<selections.length; i++){
     var divTag = 'div'+selections[i].value;

     new Ajax.Updater(divTag, './dataLoadAction', {
         method: 'post',
         insertion: Insertion.Bottom,
         parameters: {parameter: selections[i].value},

         onSuccess: function(){alert('Complete');}, 
         onFailure: function(){alert('ERROR');}
    });
}
}

Как бы я ни старался, Ajax.Updater не распознает ничего, кроме прямой строки в параметре контейнера (divTag).Есть ли способ динамически объявить, какой раздел будет обновлять Ajax.Updater?

ОБНОВЛЕНИЕ: Я исправил проблему, убрав divTags из идентификатора div "results".Программа обновления теперь сопоставляет результаты с соответствующими делениями.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Я исправил проблему, убрав divTags из идентификатора div "results".Программа обновления теперь сопоставляет результаты с соответствующими делениями.

0 голосов
/ 28 февраля 2019

Предполагая какую-то структуру, которая превращает ваши div в select, и предполагая, что $(dropDown).selectedOptions возвращает массив

cnt = 0, selections;

function updater() {
  if (cnt >= selections.length) return; // stop;
  var divTag = 'div' + selections[cnt].value;

  new Ajax.Updater(divTag, './dataLoadAction', {
    method: 'post',
    insertion: Insertion.Bottom,
    parameters: {
      parameter: selections[cnt].value
    },

    onSuccess: function() {
      console.log('Complete');
      cnt++;
      updater();
    },
    onFailure: function() {
      console.log('ERROR');
    }
  });
}

function loadData() {
  selections = $(dropDown).selectedOptions;
  cnt = 0;
  updater();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...