使用 jQuery 从 JSON 字符串解析 HTML

发布于 2024-11-08 13:25:56 字数 1382 浏览 0 评论 0原文

我不知道我做错了什么,但我有一个 JSON 字符串:

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

我需要解析它才能修改内容。例如,id 想要获取

的内容。

现在,在 jQuery 中,如果我这样做:

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

它会返回 Title

如果我这样做:

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

它返回 [],或者一个空数组。

最后,如果我这样做: console.log($(json.content));

它返回 [;标题</标题> ,<p>你好世界</p> ]</code>

这很好,但是我不能做 .find() 或任何事情。由于我不知道 HTML 是什么,因此我无法使用 $(json.content)[1]

有什么想法吗?

==更新==

经过几个小时的研究后,我决定尝试 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 时(使用上面的 JSONP 返回 HTML 片段):

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

我仍然得到一个空数组。这让我发疯......还有更多想法吗?

I have no idea what im doing wrong, but I have a JSON string with this:

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

I need to parse this to be able to modify the content. Like, for example, id want to grab the <p>'s content.

Now, in jQuery if i do:

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

It returns Title.

If i do:

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

It returns [], or, an empty array.

Finally, if I do just:
console.log($(json.content));

It returns [<title>​Title​</title>​,<p>​Hello World​</p>​]

Which is fine, but then I cant do .find() or anything. Since I wont know what the HTML will be, i cant use $(json.content)[1].

Any ideas?

==UPDATE==

After hacking at this for a couple hours i decided to try XML. My example XML was:

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

It was giving me the same grief, then it hit me, its a JS object, not a string and jQuery is expecting a string. I went and did

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

And voila! I got an array of two items. I was pretty excited but then when I went and tried it with HTML again (using the JSONP return HTML snippet above):

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

I still get an empty array. It's driving me mad... Any more ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

倚栏听风 2024-11-15 13:25:56

可能有更好的方法,但这可行(检索 p 元素):

$('<div />', {html: json.content}).find('p');

There might be a better way, but this works (retrieves the p elements):

$('<div />', {html: json.content}).find('p');
兰花执着 2024-11-15 13:25:56

这里的 jsonp443489 是什么?为什么不直接做 $.parseJSON 呢?

完成此操作后,您应该能够访问其中的内容,然后从该内容创建一个 jquery 对象并在其中进行搜索。

var json = $.parseJSON(jsoncontent);
$(json.content).find('');//或者你可以将其添加到dom并使用$('#id')进行搜索

What is jsonp443489 here? Why not just do $.parseJSON ?

Once you have done that you should be able to access content inside it and then create a jquery object from that content and search in it.

var json = $.parseJSON(jsoncontent);
$(json.content).find('');// or you can add it to dom and search using $('#id')

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文