使用 jQuery 从 JSON 字符串解析 HTML
我不知道我做错了什么,但我有一个 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));
它返回 [
这很好,但是我不能做 .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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
可能有更好的方法,但这可行(检索
p
元素):There might be a better way, but this works (retrieves the
p
elements):这里的 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')