Например, когда мы используем простейшую функцию 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 написал(а):
Я посылаю нужные данные, но при потом их надо разделить.
К примеру:
Посылаю запрос:
myscript.php содержит простейший код:
Получается что в 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)" - но так тоже не работает.
К примеру:
Посылаю запрос:
$.ajax({
type: "POST",
url: "myscript.php",
data: "param1=" + 111 + "¶m2=" + 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 Тупо парсим регулярками.
1 Применять в аяксе не responseText а responseXML,тогда получим сразу обьект
2 Оставляем responseText ,создаем обьект-контейнер типа var container=document.createlement('div'),помещаем туда текст через innerHTML ,потом вытягиваем через getElementsByTagName.
3 Тупо парсим регулярками.
_____________