Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.07.2012, 11:28
Интересующийся
Отправить личное сообщение для battrack Посмотреть профиль Найти все сообщения от battrack
 
Регистрация: 03.03.2009
Сообщений: 13

Обработка ответа после 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?
Ответить с цитированием
  #2 (permalink)  
Старый 25.07.2012, 13:53
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

battrack,
Попробуйте так
function(data){ alert ($(data).find("#MyId")) });
Ответить с цитированием
  #3 (permalink)  
Старый 25.07.2012, 15:15
Интересующийся
Отправить личное сообщение для battrack Посмотреть профиль Найти все сообщения от battrack
 
Регистрация: 03.03.2009
Сообщений: 13

Не получается!

К примеру:
Посылаю запрос:
$.ajax({
type: "POST",
url: "myscript.php",
data: "param1=" + 111 + "&param2=" + 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)" - но так тоже не работает.
Ответить с цитированием
  #4 (permalink)  
Старый 25.07.2012, 15:32
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

battrack,
Скорее всего в data responseText
Хотя попробуйте иную форму
function(data){ alert ($.data.find("#MyId")) });

Если не проходит - то только временное сохранение в скрытый див и перераспарс в нём, с последущим удалением дива после извлечения
Ответить с цитированием
  #5 (permalink)  
Старый 27.07.2012, 15:02
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Сообщение от battrack
success: function(data){ alert (data.find("#test1")) } // обрабатываю ответ
Вы пишете просто data, который в данном случае является строкой, а метод find есть у объекта jQuery, так что вам надо ваш data в этом месте обернуть в $(....), как в примере от Deff.
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
  #6 (permalink)  
Старый 29.07.2012, 15:50
Интересующийся
Отправить личное сообщение для imsha Посмотреть профиль Найти все сообщения от imsha
 
Регистрация: 19.11.2008
Сообщений: 28

$.ajax({
    url: 'test.php',
    success: function(result){
        //result == какой-то html 
        var data = $(result).filter('.класс элемента который хочешь выдернуть');
        $('#id').append(data);
    }
})
Ответить с цитированием
  #7 (permalink)  
Старый 29.07.2012, 16:06
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

var data = $(result).find('.класс элемента который хочешь выдернуть');
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какая разница между post запросами jquery и ajax? Rooner jQuery 2 18.06.2012 14:29
Jquery ajax в Operа к ASP.NET скрипту по таймеру, IIS выдает 403.9 Zhirinovsky AJAX и COMET 0 23.02.2012 12:56
Обработка данных во время AJAX запроса user783 AJAX и COMET 5 09.12.2011 03:24
Проблема с событиями после ajax запроса Mirgorod AJAX и COMET 5 12.06.2010 18:24
Сохранение результата ajax запроса после нажатия 'back' gregOlsen AJAX и COMET 5 18.11.2009 12:23