在application/x-javascript
类型的回复中,我选择了可变的JSON
部分。以下是JSON
-
{
"__ra":1,
"payload":null,
"data":[
[
"replace",
"",
true,
{
"__html": "\u003Cspan class=\"highlight fsm\" id=\"u_c_0\">I want this text only\u003C\/span>"
}
]
]
}
从我从Stackoverflow获得的引用中,我能够以下列方式选择data
内的内容 -
var temp = JSON.parse(resp).data;
但我的目标是仅获取__html
值为I want this text only
的文本部分。有人帮忙。
答案 0 :(得分:2)
首先,您必须访问目标对象:
var html = JSON.parse(resp).data[0][3]._html;
但是你想要的输出是我只想要这个文字
html 变量不包含该文字,但有些html中您要查找的内容是 span
内的文字如果您接受在项目中包含jQuery,则可以通过这种方式访问该内容
var text = $(html).text();
答案 1 :(得分:1)
首先,您需要对该数据更具体一些,以获取所需的文本字符串:
var temp = JSON.parse(resp).data[0][3]['__html'];
接下来,您需要搜索该字符串以提取所需的数据。这在很大程度上取决于你得到的回应的规律性。在任何情况下,您可能都需要使用正则表达式来解析响应中获得的字符串。
在这种情况下,您尝试在字符串中的<span>
元素中获取文本。如果您的所有回复都是如此,您可以执行以下操作:
var text = /<span[^>]*>([^<]*)<\/span>/.exec(temp)[1];
这非常专门地在打开和关闭不包含其他HTML标记的一个span标记内查找文本。
在此处的表达式中查看的主要部分是([^<]*)
,它将捕获任何不是开口角度括号的字符<
。这周围的一切都在寻找具有可选属性的<span>
实例。 exec
是您在temp
字符串上执行的返回匹配的方法,[1]
将为您提供第一个也是唯一的捕获(例如<span>
标记之间的文本)。
您需要阅读有关RegExp的更多信息,以了解如何更具体地执行某些操作(或在您的问题中提供有关您正在寻找的响应模式的更具体信息)。但是,如果你要做这种工作(解析文本,寻找模式和匹配),那么通常非常值得阅读正则表达式,因为它们是一种非常简洁和强大的方法,如果有点困惑的话
答案 2 :(得分:1)
把它们放在一起:
var html = JSON.parse(resp).data[0][3]._html;
var div = document.createElement("div");
div.innerHTML = html;
var text = div.textContent || div.innerText || "";
Kudos @Tim Down关于跨浏览器innerHTML的答案:JavaScript: How to strip HTML tags from string?