Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.06.2018, 18:03
Интересующийся
Отправить личное сообщение для Maklay Посмотреть профиль Найти все сообщения от Maklay
 
Регистрация: 01.10.2017
Сообщений: 19

Разный результат работы $.ajax в почти идентичных условиях
Есть небольшой php файлик который по запросу отдает:
Код:
<div id="Comment" class="dragable">Self: 1 | Enemy:2<br>
Self: 2 | Enemy:3<br>Self: 3 | Enemy:4<br>Self: 5 | Enemy:6<br></div>
Надо сделать данный див, дочерним по отношению в другом находящемуся в документе.

Суть вопроса:

В такой реализации:
$.ajax({
                url: '\SQL_connect.php',

                success: function (data) {
                    $('body').append(data);
                }
            });

все замечательно работает(при привязке к любому элементу).

Но при попытке сделать тоже самое для нескольких объектов:

let allObj = $('.circle');
            allObj.forEach = [].forEach;
            allObj.forEach(function (eObj, i, arr) {
                $.ajax({
                    url: '\SQL_connect.php',
                    success: function (data) {
                        eObj.append(data);
                    }
                });
            }
            );

К каждому div участвующему в переборе привязывается дочерним элементом, просто текстовая строка:

"<div id="Comment" class="dragable">Self: 1 | Enemy:2<br>Self: 2 | Enemy:3<br>Self: 3 | Enemy:4<br>Self: 5 | Enemy:6<br></div>"

То есть привязывается все куда надо, но просто текстом, а не элементом DOM. Подскажите как исправить сей момент.
Ответить с цитированием
  #2 (permalink)  
Старый 23.06.2018, 18:18
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 456

$(eObj).append(data);
Ответить с цитированием
  #3 (permalink)  
Старый 23.06.2018, 18:27
Интересующийся
Отправить личное сообщение для Maklay Посмотреть профиль Найти все сообщения от Maklay
 
Регистрация: 01.10.2017
Сообщений: 19

Спасибо так работает!
Но не могли бы вы подсказать почему не работало в моей реализации(вернее работало вот так вот, если бы выдавалась ошибка было бы понятнее), для избежания ошибок подобного рода в будущем.

Последний раз редактировалось Maklay, 23.06.2018 в 19:15.
Ответить с цитированием
  #4 (permalink)  
Старый 23.06.2018, 18:30
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,592

eObj в данном случае нативный элемент DOM, а не jQuery-объект, т.к. jQuery-объект если забирать из него элементы по индексу отдаёт именно нативные элементы, а не новые jQuery-объекты.
Также недавно в современных браузеров у элементов появился модный метод append, который либо делает appendChild, если передан другой DOM элемент, либо, если передана строка, добавляет оную как текстовый узел. Ещё год назад у вас бы просто всё валилось с ошибкой и было бы проще понять в чём проблема.

Решение проблемы в лоб: завернуть элемент обратно в jQuery:
eObj.append(data);
// -->
$(eObj).append(data);
Но имхо, чем бессмысленно насиловать сервер на каждый элемент, разумнее сделать так:
$.ajax({
  url: '\SQL_connect.php',
  success: function (data) {
    $('.circle').append(data);
  }
});
jQuery прекрасно умеет работать с группами элементов сам.
__________________
29375, 35

Последний раз редактировалось Aetae, 23.06.2018 в 18:33.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно получить результат работы php скрипта после отправки данных через ajax nina_ jQuery 5 14.11.2016 14:17
Не появляется результат работы скрипта Нубопрогер Events/DOM/Window 4 06.02.2015 16:49
Как получить результат работы цикла в виде массива. Tungus Общие вопросы Javascript 29 08.12.2014 19:33
Как переместить результат работы скрипта? Vlaimir Events/DOM/Window 2 31.08.2009 13:52