Разбор HTML из строки JSON с помощью jQuery - PullRequest
5 голосов
/ 22 мая 2011

Понятия не имею, что я делаю неправильно, но у меня есть строка JSON с этим:

jsonp443489({"content":"<!DOCTYPE html><html><head><title>Title</title></head><body><p>Hello World</p></body></html>"});

Мне нужно проанализировать это, чтобы иметь возможность изменять содержимое. Как, например, id хочет получить содержимое <p>.

Теперь, в jQuery, если я сделаю:

console.log($(json.content).html());

Возвращает Title.

Если я это сделаю:

console.log($('p',json.content));

Возвращает [] или пустой массив.

Наконец, если я просто сделаю: console.log ($ (json.content));

Возвращает [<title>​Title​</title>​,<p>​Hello World​</p>​]

Что хорошо, но тогда я не могу сделать .find() или что-нибудь еще. Поскольку я не знаю, каким будет HTML, я не могу использовать $(json.content)[1].

Есть идеи?

== UPDATE ==

После взлома этого в течение пары часов я решил попробовать XML. Мой пример XML был:

<?xml version=\"1.0\" encoding=\"UTF-8\"?><doc><item>One</item><item>Two</item></doc>

Это доставляло мне то же самое горе, затем оно меня ударило, это объект JS, а не строка, и jQuery ожидает строку. Я пошел и сделал

$(JSON.stringify(json.content)).find('item')

И вуаля! Я получил массив из двух предметов. Я был очень взволнован, но потом, когда я снова попробовал его с HTML (используя приведенный выше фрагмент HTML-кода возврата JSONP):

console.log($(JSON.stringify(json.content)).find('p'));

Я все еще получаю пустой массив. Это сводит меня с ума ... Есть еще идеи?

Ответы [ 2 ]

2 голосов
/ 22 мая 2011

Возможно, есть лучший способ, но он работает (извлекает элементы p):

$('<div />', {html: json.content}).find('p');
0 голосов
/ 22 мая 2011

Что такое jsonp443489 здесь?Почему бы просто не сделать $ .parseJSON?

Как только вы это сделаете, вы сможете получить доступ к содержимому внутри него, а затем создать объект jquery из этого содержимого и выполнить поиск в нем.

var json = $ .parseJSON (jsoncontent);$ (json.content) .find (''); // или вы можете добавить его в dom и искать с помощью $ ('# id')

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