Обработка ответа после POST-запроса (jQuery - Ajax)
Разбираюсь с ajax-функциями jQuery и возник вот такой вопрос, ответ на который никак найти не могу:
Например, когда мы используем простейшую функцию load, то мы извлекаем файл с сервера и, например, вставляем его содержимое в страницу. $('div:test').load('test.html'); - все ясно нет проблем. Можно также не всю страницу вставить, а только ее часть по какому-либо селектору, например так: $('div:test').load('test.html .myclass'); - грузим из страницы test.html содержимое контейнера с классом myclass. Вот мой вопрос и касается такой выборочной загрузки. Как из ответа получить только нужные элементы при отправке запроса методом POST? Есть функция: $.post("test.php", { перечисляем параметры}, function(data){ alert (data) }); - посылает post-запрос к test.php, тот в свою очередь делает какие-то операции и посылает ответ. Наша функция принимает ответ в data и выводит в окне alert. Но, например, я не хочу выводить весь data, а только какой-то один контейнер из него, что мне нужно делать? И правильно ли я понимаю, что при использовании низкоуровневой функции $.ajax это выборка данных из ответа осуществляется путем использования параметра dataFilter? |
battrack,
Попробуйте так function(data){ alert ($(data).find("#MyId")) }); |
Не получается!
К примеру: Посылаю запрос: $.ajax({ type: "POST", url: "myscript.php", data: "param1=" + 111 + "¶m2=" + 222, // посылаю скрипту какие-то параметры (не важно какие) dataType: "html", success: function(data){ alert (data.find("#test1")) } // обрабатываю ответ }); myscript.php содержит простейший код: <?php echo("<div id=\"test1\">lalalala</div><div id=\"test2\">tatatata</div>"); ?> Получается что в data возвращается оба дива и test1 и test2, но мне нужно чтобы в success из data извлекалось содержимое контейнера test1 и вывелось к примеру в alert. Поэтому я делаю запись типа alert (data.find("#test1")) как вы посоветовали, ожидая что из data возъмется содержимое контейнера с id=test1 и в окошке alert я увижу "lalalala". Не получается! Если например в alert выводить сам data без применения к нему селекторов, то выводится: <div id="test1">lalalala</div><div id="test2">tatatata</div> Но вот как вывести только test1 или test2 - хоть убей не понимаю. Видимо не до конца разобрался с понятиями "селектор", "объект" и т.д. Т.к. кто-то мне советовал делать так: "data.find(selector)" - но так тоже не работает. |
battrack,
Скорее всего в data responseText Хотя попробуйте иную форму function(data){ alert ($.data.find("#MyId")) }); Если не проходит - то только временное сохранение в скрытый див и перераспарс в нём, с последущим удалением дива после извлечения |
Цитата:
|
$.ajax({ url: 'test.php', success: function(result){ //result == какой-то html var data = $(result).filter('.класс элемента который хочешь выдернуть'); $('#id').append(data); } }) |
var data = $(result).find('.класс элемента который хочешь выдернуть');
|
Часовой пояс GMT +3, время: 17:46. |