返回html数据的Angular $ http.get查询不会显示为正常的html ..而是在网站中显示为文本..

时间:2015-01-22 07:15:55

标签: javascript html json angularjs

基本上我的问题是,当我使用AngularJS的$http.get方法获取数据时,由PHP打印的Json编码数据不会在网站中呈现,而是显示为纯文本..例如,当PHP打印<h3 class=\"someclass\">Hello World<\/div>"并同时我尝试使用JSON.parse解析JSON,但它给了我Syntax Error: Unexpected token o。基本上收到的HTML标记没有呈现..它就像纯文本.. 见下文:

enter image description here

我以黑色矩形展开的h3标记不会在页面中呈现。即使在源代码中,您也可以看到它不是标记而是纯文本。

3 个答案:

答案 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>