【发布时间】:2011-08-30 09:09:43
【问题描述】:
我不知道我做错了什么,但我有一个 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 时(使用上面的 JSONP 返回 HTML sn-p):
console.log($(JSON.stringify(json.content)).find('p'));
我仍然得到一个空数组。快把我逼疯了……还有什么想法吗?
【问题讨论】:
-
你能在这里更清楚地定义你的问题吗?
-
我会尝试...但问题确实是,您如何从 JSON 字符串中解析 HTML :) 但不知道如何改写这个...
-
仅供参考,这个
JSON.stringify(json.content)是不必要的。json.content已经是一个字符串 (XML)。如果您将字符串传递给JSON.stringify,它只会返回相同的字符串。也许您应该先阅读有关 JavaScript 对象和 JSON 的内容... -
不,它不会返回相同的字符串。在 JSFiddle 上抛出该 XML,发出 JSONP 请求,并按原样解析它 (
$(xml).find('item'))。它不会工作。用JSON.stringify转换它,然后把它传递进去。它会工作的。我做 JS 很长时间了,jQuery 也做了 4 年。如果答案很简单,只是因为我不懂 JS 对象和 JSON,请给我一个 JSFiddle 或 JSBin 链接,告诉我如何去做,而不是抨击我的 JS 知识。 -
你是对的,它不是同一个字符串。
JSON.stringify将在字符串的开头和结尾添加引号"。所以你得到的是"<?xml ...",而不是<?xml ...。没有它,它仍然可以工作:jsfiddle.net/MYNVj 如果看起来像那样,我很抱歉,但我并不打算抱怨你的知识......
标签: javascript jquery html ajax json