基本上我的问题是,当我使用AngularJS的$http.get
方法获取数据时,由PHP打印的Json编码数据不会在网站中呈现,而是显示为纯文本..例如,当PHP打印<h3 class=\"someclass\">Hello World<\/div>"
并同时我尝试使用JSON.parse解析JSON,但它给了我Syntax Error: Unexpected token o
。基本上收到的HTML标记没有呈现..它就像纯文本..
见下文:
我以黑色矩形展开的h3
标记不会在页面中呈现。即使在源代码中,您也可以看到它不是标记而是纯文本。
答案 0 :(得分:0)
这里有一个非常好的答案,可以在角度转义/不转义HTML:https://stackoverflow.com/a/19417443/402551
这是一个安全功能,注入DOM的文本不会被解析为HTML,从而可以避免某些XSS攻击等。您必须手动确保它已呈现,因此您需要自己考虑安全隐患。在绕过转义之前,请熟悉XSS机制并清理输入。
通常,Angular的设计方式是不渲染任何HTML服务器端,只需向前端提供数据并在那里渲染。这样,您就不会遇到大部分问题。请检查一下,您是否可以在项目中更改它。
答案 1 :(得分:0)
使用 ng-bing-html 从响应中转义HTML内容,
获得响应时,请执行以下操作,
$scope.temp_variable=$sce.trustAsHtml(response);
在您的HTML中显示如下的值,
<div>
<span ng-bind-html="temp_variable"></span>
</div>
答案 2 :(得分:0)
要打印html数据,Ned首先要包含清理模块 http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-sanitize.js
然后创建过滤器
Rapp.filter('unsafe', function($sce) {
return function(val) {
return $sce.trustAsHtml(val);
};
});
然后编写html,如下所示
<span ng-bind-html="myWelcome | unsafe"></span>