jQuery фильтрует данные AJAX и затем заменяет их данными - PullRequest
2 голосов
/ 14 июля 2010

Я вызываю страницы через AJAX в jQuery.

Содержимое этих страниц необходимо фильтровать, чтобы я мог получить только определенный класс DIV.В данном случае 'Section1'.

Эти отфильтрованные данные должны заменить те же данные на текущей странице в DIV того же класса.

В настоящее время у меня это есть, но на самом деле это не работаетдля меня:

$("#dialog_select").live('change', function() {

    //set the select value
    var $optionVal = $(this).val();

    //$(this).log($optionVal);

    $.ajax({
        type: "GET",
        url: $optionVal,
        dataType: "html",
        cache: false,
        success: function(data) {

            var $filteredData = $(data).filter('.Section1');

            $('.Section1').replaceWith($filteredData);
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(xhr.status);
            alert(thrownError);
        }
    });

});

Ответы [ 2 ]

2 голосов
/ 14 июля 2010

I думаю ваша проблема, скорее всего, здесь:

var $filteredData = $(data).find('.Section1');
$('.Section1').replaceWith($filteredData);

.filter() найдет только элементы верхнего уровня в ответе (если это страница,это <html>, и не будет никаких результатов)..find() ищет дочерние элементы.Также имейте в виду, что если у вас есть несколько элементов .Section1, это не будет работать должным образом и будет иметь место некоторое дублирование.

0 голосов
/ 14 июля 2010

Это сложная вещь, и я бы порекомендовал поместить данные во что-то вроде DOMParser или document.implementation.createDocument или MSXML.

if (window.DOMParser) {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(text,"text/xml");
}
else {
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async="false";
    xmlDoc.loadXML(text); 
}

- это базовый пример кода.Сам jQuery может фильтровать селектор с помощью функции загрузки.http://api.jquery.com/load/ Это, однако, имеет несколько ограничений, таких как невозможность фильтрации по тегам html, head или body.Вот почему описанный выше метод безопаснее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...