Jquery AJAX响应的提取部分缺少HTML开始标记

Jquery AJAX响应的提取部分缺少HTML开始标记,jquery,ajax,Jquery,Ajax,出于某种原因,AJAX响应的提取部分缺少所有打开的HTML标记。请参阅下面的代码和警报框图像。有人知道为什么会这样吗 alert(data); json_response = $(data).find('div#json').text(); alert(json_response); 使用 出于某种原因,您将JSON放在HTML中,但浏览器的HTML解析器不知道JSON,因此它认为JSON中的HTML只是文档的一部分。由于斜杠是(不必要地)转义的,它只识别开始标记,而不识别结束标记,并且由于

出于某种原因,AJAX响应的提取部分缺少所有打开的HTML标记。请参阅下面的代码和警报框图像。有人知道为什么会这样吗

alert(data);
json_response = $(data).find('div#json').text();
alert(json_response);

使用


出于某种原因,您将JSON放在HTML中,但浏览器的HTML解析器不知道JSON,因此它认为JSON中的HTML只是文档的一部分。由于斜杠是(不必要地)转义的,它只识别开始标记,而不识别结束标记,并且由于您使用
.text()
,它会给您文本,但不会给您识别的HTML元素

为什么HTML中有JSON呢?不要那样做

如果您认为必须这样做,则需要对JSON进行HTML转义:

<div><div id="json">{"twee": "&lt;ol&gt;&lt;li&gt;pro&lt;/li&gt;&lt/ol;li&gt;hallo&lt;/li&gt;&lt;&gt;"}</div></div>
{“twee”:“ollipro/li</ol;lihallo/li”}

请更具体一些。你是在问为什么第二个警报没有html标签吗?好吧,你已经得到了下面的答案。简而言之,
text()
返回元素的文本内容,不带任何HTML标记,而
HTML()
将元素的整个内容简单地视为文本并返回所有内容。我包含了JSON(使用PHP的JSON_encode函数生成)在一个div中,为了能够从包含morte的AJAX响应中提取它,而不是从纯JSON>>>@durianangka中提取,将所有内容都放在JSON中而不是使用像那样的拐杖似乎更有意义。你可能是对的。需要从生成JSON代码的PHP中删除Javascript。
<div><div id="json">{"twee": "&lt;ol&gt;&lt;li&gt;pro&lt;/li&gt;&lt/ol;li&gt;hallo&lt;/li&gt;&lt;&gt;"}</div></div>