[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обработка ответа после POST-запроса (jQuery - Ajax
battrack
Разбираюсь с 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?



Спустя 5 минут, 39 секунд (25.07.2012 - 10:35) kamanch написал(а):
Цитата
посылает post-запрос к test.php, тот в свою очередь делает какие-то операции и посылает ответ.

В ответе отсылать только нужные данные.

Спустя 3 часа, 42 минуты, 9 секунд (25.07.2012 - 14:17) battrack написал(а):
Я посылаю нужные данные, но при потом их надо разделить.

К примеру:
Посылаю запрос:
$.ajax({
type: "POST",
url: "myscript.php",
data: "param1=" + 111 + "&param2=" + 222, // посылаю скрипту какие-то параметры (не важно какие)
dataType: "html",
success: function(data){ alert (data.find("#test1")) } // обрабатываю ответ
});


myscript.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)" - но так тоже не работает.

Спустя 52 минуты, 52 секунды (25.07.2012 - 15:10) bodja написал(а):
Есть 3 варианта.
1 Применять в аяксе не responseText а responseXML,тогда получим сразу обьект
2 Оставляем responseText ,создаем обьект-контейнер типа var container=document.createlement('div'),помещаем туда текст через innerHTML ,потом вытягиваем через getElementsByTagName.
3 Тупо парсим регулярками. smile.gif


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.