Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.07.2015, 02:43
Аспирант
Отправить личное сообщение для Dtri Посмотреть профиль Найти все сообщения от Dtri
 
Регистрация: 14.12.2014
Сообщений: 86

Ajax. проверка ответа перед интеграцией в страницу
Здравствуйте,

С сервера приходит определённый дом. Например:
<div class="main-wrapper">
            <div>
                div1 вложенность 1
                <div>
                    div1 вложенность 2
                </div>
            </div>
            <div>
                div2 вложенность 1
                <div>
                    div1 вложенность 2
                    <div>
                        div1 вложенность 3
                    </div>
                    <div>
                        div2 вложенность 3
                    </div>
                </div>
            </div>
            <div>
                div3 вложенность 1
            </div>
            <div>
                div4 вложенность 1
            </div>
            <div>
                div5 вложенность 1
            </div>
            <div>
                div6 вложенность 1
            </div>
            <div>
                div7 вложенность 1
            </div>
        </div>

этот ответ аджаксом подгружается в такую страницу:
<!DOCTYPE html>
<html>
    <head lang="en">
        <meta charset="UTF-8">
        <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
        <title></title>
    </head>
    <body>

        <div class="main-wrapper">
            <div></div>
        </div>
        <div class="second-wrapper">
            <div></div>
        </div>
        <div class="third-wrapper">
            <div></div>
        </div>
    </body>
</html>


как видно в странице назначения уже есть div с классом main-wrapper

задача:
1. проанализировать ответ от сервера (найти div-ы с одинаковыми классами в ответе и странице назначения {в данном примере это .main-wrapper}).
2. удалить из файла назначения блоки с классами, которые встречаются в ответе от сервера
(в данном примере это div с классом .main-wrapper)
3. вставить ответ сервера в отредактированную страницу назначения {main-wrapper заранее удалён}


Проверку на одинаковые классы нужно проводить только в дочерних элементах body (первой вложенности).
колличество таких элементов неограничено.

Желательно не использовать циклы.

Последний раз редактировалось Dtri, 31.07.2015 в 17:02.
Ответить с цитированием
  #2 (permalink)  
Старый 31.07.2015, 03:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Это игра такая? Зачем же отдавать клиенту то, что придется удалять?
Ответить с цитированием
  #3 (permalink)  
Старый 31.07.2015, 15:53
Аспирант
Отправить личное сообщение для Dtri Посмотреть профиль Найти все сообщения от Dtri
 
Регистрация: 14.12.2014
Сообщений: 86

Сообщение от laimas Посмотреть сообщение
Это игра такая? Зачем же отдавать клиенту то, что придется удалять?
Это не игра, а вполне рутиная задача. в ответе от сервера приходит определённый контент в определённом диве (wrapper-е) но с другим содержимым, отличным от того что хранится в странице назначения, хоть врапппер и одного класа но содержимое этих блоков разное, чтобы избежать наслоения, предыдущий вариант, нужно удалять
Ответить с цитированием
  #4 (permalink)  
Старый 31.07.2015, 16:06
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А зачем? Можете пояснить зачем сервер отдает клиенту данные, которые ему не нужны?
Ответить с цитированием
  #5 (permalink)  
Старый 31.07.2015, 16:27
Аспирант
Отправить личное сообщение для Dtri Посмотреть профиль Найти все сообщения от Dtri
 
Регистрация: 14.12.2014
Сообщений: 86

Сообщение от laimas Посмотреть сообщение
А зачем? Можете пояснить зачем сервер отдает клиенту данные, которые ему не нужны?
они нужны.

есть изначально div с классом main-wrapper. внутри него какая-то информация.

когда приходит ответ от сервера, в ответе может содержаться такойже див но с другой информацией внутри.

задача втасить новую информацию в страницу назначения так чтобы предыдущая удалилась. чтобы не получалось что после append будет 2 одинаковых блока main-wrapper. "в конце должен остаться только один", тот что пришёл от сервера. а устаревший должен затереться
Ответить с цитированием
  #6 (permalink)  
Старый 31.07.2015, 16:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Значит надо не искать и удалять, а заменять содержание новым.
Ответить с цитированием
  #7 (permalink)  
Старый 31.07.2015, 16:52
Аспирант
Отправить личное сообщение для Dtri Посмотреть профиль Найти все сообщения от Dtri
 
Регистрация: 14.12.2014
Сообщений: 86

Сообщение от laimas Посмотреть сообщение
Значит надо не искать и удалять, а заменять содержание новым.
отсюда вопрос, как?

вот страница.
<div class="class-1">

</div>
<div class="class-2">

</div>
<div class="class-3">

</div>
<div class="class-4">

</div>



ответ может приходить разный. иногда вот такой:

<div class="sovsem-drugoi-class-1">

</div>
<div class="sovsem-drugoi-class-2">

</div>
<div class="sovsem-drugoi-class-3">

</div>
<div class="class-4">

</div>


а может и такой:

<div class="class-1">

</div>
<div class="class-2">

</div>
<div class="class-3">

</div>
<div class="class-4">

</div>
Ответить с цитированием
  #8 (permalink)  
Старый 31.07.2015, 16:53
Аспирант
Отправить личное сообщение для Dtri Посмотреть профиль Найти все сообщения от Dtri
 
Регистрация: 14.12.2014
Сообщений: 86

в первом случае одинаковый только четвёртый блок, во втором случае все блоки одинаковые.


И главная страница, не всегда одинаковая, она может состоять из 4х, 5 ..... и так далее блоков
Ответить с цитированием
  #9 (permalink)  
Старый 31.07.2015, 16:54
Аспирант
Отправить личное сообщение для Dtri Посмотреть профиль Найти все сообщения от Dtri
 
Регистрация: 14.12.2014
Сообщений: 86

$.ajax({
            url: href,
            data: JSON.stringify({"name":"Vasia"}),
            type: target,
            contentType: 'application/json',

            success: function (requestData, status, xhr) {
                $(requestData).children('div').each(function(){
                    id = $(this).uniqueId(); // смотрю все блоки первой вложенности в ответе от сервера.
                    $(id).remove(); // удаляю у родителя элементы с такими же id


                });
                $('body').append(requestData); // помещаю ответ сервера в страницу назначения

            }
        });


пытаюсь сделать вот так. но что-то не работает

Последний раз редактировалось Dtri, 31.07.2015 в 16:58.
Ответить с цитированием
  #10 (permalink)  
Старый 31.07.2015, 17:05
Аспирант
Отправить личное сообщение для Dtri Посмотреть профиль Найти все сообщения от Dtri
 
Регистрация: 14.12.2014
Сообщений: 86

$(requestData).children('div').each(function(){
                    id = $(this).attr('id'); // беру строкой значение id
                    $('"#'+id+'"').remove(); // пытаюсь запихнуть в  селектор


                });


вот так тоже не выходит
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка ответа от сервера Ajax gam0ra Общие вопросы Javascript 4 13.03.2015 23:16
Ajax при заходе на страницу из поисковика - не работает Алексей_ГР Ваши сайты и скрипты 2 03.09.2013 00:03
Книги по Ajax BaVa Учебные материалы 18 18.08.2013 14:05
AJAX проверка перед отправкой формы Tmin10 jQuery 4 16.11.2012 21:40
Обработка ответа после POST-запроса (jQuery - Ajax) battrack jQuery 6 29.07.2012 16:06