Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   jquery post data (https://javascript.ru/forum/dom-window/52817-jquery-post-data.html)

Officeoff.ru 08.01.2015 19:33

jquery post data
 
Всем привет. Некоторое время назад уже задавал похожий вопрос. Но все таки хотел, уяснить для себя эту тему.
Мне нужно при отправке post запроса отобразить фрагмент полученный с сервера.

$('#div').append(data); // Так получаю все что приходит с сервера
$('#div').append($('<div>').html(data).find('#one').html()); // Так получаю ответ находящийся в <div id='one'>

Все вроде работает. Но хочется более красивой реализации. Да и понять эту тему хотелось бы...
Может кто нибудь объяснить?!

danik.js 08.01.2015 20:33

Красиво - это когда сервер выдает только то, что тебе требуется. А не генерит по-напрасну целую страницу, которая почти целиком, кроме #one пойдет в утиль. За такое по рукам надо бить :-/ .

Officeoff.ru 08.01.2015 23:51

Цитата:

Сообщение от danik.js (Сообщение 350313)
Красиво - это когда сервер выдает только то, что тебе требуется. А не генерит по-напрасну целую страницу, которая почти целиком, кроме #one пойдет в утиль. За такое по рукам надо бить :-/ .

А кто сказал, что остальная часть идет в утиль?! :)))
Она вся необходима иначе бы я не стал заставлять сервак чрезмерно напрягаться. Я пока еще в своем уме.
И вопрос касался не этого.
И все таки как лучше вывести фрагмент кода с сервера в отдельный div при помощи jquery?

danik.js 09.01.2015 11:46

Задача - распарсить html. Для начала - что тебе шлет сервер? Страницу, включая doctype, или фрагмент?

Если страницу, то для парсинга подойдет DOMParser, причем в jQuery он не используется. Для дальнейшего импорта узлов - document.importNode()

Если фрагмент, то в браузере нет API для парсинга фрагмента (и наверное быть не может). В таком случае нужно создать элемент-контекст данного фрагмента (а для этого ты должен заранее знать для какого контекста предназначен фрагмент). Обычно подходит <div>. И присвоить innerHTML, и тогда браузер автоматически запустит парсер в режиме парсинга фрагмента и создаст DOM. Ну а далее делаешь выборку элементов и добавляешь их в DOM документа.


var $context = $('<div/>', {html: response});
$div.append($context.find('#one'));
$div.append($context.find('#two'));


Часовой пояс GMT +3, время: 12:30.