Подтвердить что ты не робот

Загрузка фреймов страницы с помощью JQuery AJAX

Я хотел бы использовать $.ajax() для запроса страницы, но загружать только фрагменты этой страницы. Я знаю, вы можете указать, какие фрагменты страницы вы хотите с .load(), но мне было интересно, возможно ли это с помощью $.ajax?

4b9b3361

Ответ 1

Для тех из вас, кто задается вопросом, stoplion ссылается на эту функцию: Загрузка фрагментов страницы (прокрутите страницу вниз):

Метод .load(), в отличие от $.get(), позволяет нам указать часть удаленного документа, который нужно вставить. Это достигается специальным синтаксисом параметра url. Если один или несколько символов пробела включены в строку, часть строки, следующей за первым пространством, считается селектором jQuery, который определяет загружаемый контент.

Так как $.get() не поддерживает его, я предполагаю, что $.ajax тоже не будет. Простым способом реализации этого будет следующее:

$.ajax({
   url: 'http://example.com/page.html',
   data: {},
   success: function (data) {
      $("#el").html($(data).find("#selector"));
   },
   dataType: 'html'
});

Это будет эквивалент

$("#el").load('http://example.com/page.html #selector');

Однако обратите внимание, что специальный синтаксис ('#selector') означает, что скрипты, присутствующие в загруженном HTML, будут выполняться not. См. Script Выполнение в документах .load().

Ответ 2

Вы можете получить свой фрагмент через сообщение, добавить html в div с дисплеем: none; Затем используйте селектор, чтобы получить нужный фрагмент, и добавьте его в область, которую вы хотите отобразить.

Воздушный код:

<div id="tempRegion" style="display:none;">

</div>

$.ajax({
    url: "page.htm",
    type: "GET",
    success: function(results){

        $('#tempRegion').html(results);

        ...

        //  Now select fragment, append to display area
        var fragement = $('#someFragment').html();

        $('#displayRegion').html(fragement);

    })

});

Ответ 3

Правильный ответ для вас:

$.ajax({
  url: 'http://example.com/page.html',
  data: {},
  success: function (data) {
    $("#el").html($(data).append(data).find("#selector"));
  },
  dataType: 'html'
});

Ответ 4

Простое решение с использованием метода загрузки:

$("#menu a").click(function(){
    event.preventDefault();
    $("#container").load(this.href + " #container p");
    return false;
});

Используйте только метод Ajax для более сложных сценариев, таких как отправка или получение из файла PHP script или JSON, иначе это замедлит ваш сайт.