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 (первой вложенности). колличество таких элементов неограничено. Желательно не использовать циклы. |
Это игра такая? Зачем же отдавать клиенту то, что придется удалять?
|
Цитата:
|
А зачем? Можете пояснить зачем сервер отдает клиенту данные, которые ему не нужны?
|
Цитата:
есть изначально div с классом main-wrapper. внутри него какая-то информация. когда приходит ответ от сервера, в ответе может содержаться такойже див но с другой информацией внутри. задача втасить новую информацию в страницу назначения так чтобы предыдущая удалилась. чтобы не получалось что после append будет 2 одинаковых блока main-wrapper. "в конце должен остаться только один", тот что пришёл от сервера. а устаревший должен затереться :) |
Значит надо не искать и удалять, а заменять содержание новым.
|
Цитата:
вот страница. <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> |
в первом случае одинаковый только четвёртый блок, во втором случае все блоки одинаковые.
И главная страница, не всегда одинаковая, она может состоять из 4х, 5 ..... и так далее блоков |
$.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); // помещаю ответ сервера в страницу назначения } }); пытаюсь сделать вот так. но что-то не работает |
$(requestData).children('div').each(function(){ id = $(this).attr('id'); // беру строкой значение id $('"#'+id+'"').remove(); // пытаюсь запихнуть в селектор }); вот так тоже не выходит |
Часовой пояс GMT +3, время: 04:45. |