Простой jQuery ajax пример, не находящий элементы в возвращенном HTML

Если вы используете git и у вас уже есть плагин tpope fugitive.vim , то просто:

:Gmove newname

Это будет:

  1. Переименовать ваш файл в диск.
  2. Переименуйте файл в git repo.
  3. Перезагрузите файл в текущий буфер.
  4. Сохранить историю отмен.

Если ваш файл еще не был добавлен в репозиторий git, то сначала добавьте его:

:Gwrite

11
задан arogachev 15 February 2015 в 08:42
поделиться

3 ответа

Мне удалось легко загрузить фрагменты из полных html-документов, используя .load () .

Чтобы создать новый блок с извлеченным HTML-кодом в DOM, я делаю следующее:

$('<div></div>').appendTo('body').load('some-other-document.html div#contents');

Если это не работает для вас, убедитесь, что вы используете самую последнюю версию (или публикацию 1.2) jQuery. Дополнительные примеры см. В документации для .load .

Изменить:

Однако обратите внимание, что в приведенном выше примере результат будет следующим:

<div><div id="contents">...</div></div>

Чтобы получить только содержимое #contents div в другом документе, используйте функцию обратного вызова в вызове функции загрузки.

$('<div></div>').load('some-other-document.html div#contents', null, 
    function (responseText, textStatus, XMLHttpRequest) {
        if (textStatus == success) {
            $('<div></div>').appendTo('body').html($(this).html());
        }
    }
);
7
ответ дан 3 December 2019 в 05:36
поделиться

Почему бы не попробовать это и посмотреть, что произойдет:

$('#testDiv').load('ajaxtest-load.html #wrapper', function(resp) {
    alert(resp);
});

Из документации по $. Load :

В jQuery 1.2 теперь можно указать Селектор jQuery в URL-адресе. Делать это будет фильтровать входящий HTML документ, только вводя элементы которые соответствуют селектору.

2
ответ дан 3 December 2019 в 05:36
поделиться

Я обнаружил, что если в ajaxtest-load.html нет тегов или , а есть только несколько элементов html, он работает .

Изменить:

Если ввод должен быть полной HTML-страницей, может быть, вы можете сначала удалить теги, которые вам не нужны, с помощью строковых операций .. кто угодно?

Изменить 2:

Смутно вспомнил, что Javascript / DOM разрешал "временные документы", с которыми вы могли работать и использовать результаты, затем небольшой поиск в Google дал функцию parseHTML ( http://www.daniweb.com/ форумы / post874892-2.html ), который я адаптировал, чтобы возвращать правильный бит:

$(document).ready(function(){
  $('input').click(function(){
    $.ajax({
      type : "POST",
      url : 'ajaxtest-load.html',
      dataType : "html",
      success: function(data) {
        alert( data ); // shows whole dom
        var gotcha = parseHTML(data, 'wrapper');
        if (gotcha) {
          alert($(gotcha).html());
        }else{
          alert('ID not found.');
        }
      },
      error : function() {
        alert("Sorry, The requested property could not be found.");
      }
    });
  });
});

function parseHTML(html, idStr) {
  var root = document.createElement("div");
  root.innerHTML = html;
  // Get all child nodes of root div
  var allChilds = root.childNodes;
  for (var i = 0; i < allChilds.length; i++) {
    if (allChilds[i].id && allChilds[i].id == idStr) {
      return allChilds[i];
    }
  }
  return false;
}

Это работает?

3
ответ дан 3 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: