Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用$http时,如何将HTML返回为HTML而不是文本_Javascript_Php_Html_Angularjs - Fatal编程技术网

Javascript 使用$http时,如何将HTML返回为HTML而不是文本

Javascript 使用$http时,如何将HTML返回为HTML而不是文本,javascript,php,html,angularjs,Javascript,Php,Html,Angularjs,这件事我已经坚持了好几天了 基本上我有一个带Angular的$http.post,发布一个电子邮件地址和一条从post.php发送的邮件。然后,Post.php会根据mail()的结果回显文本,但当我返回Success时,它实际上会在DOM上显示HTML,而不是处理它 谢谢你的帮助 app.controller('contactsController', function($scope, $rootScope, $http) { $rootScope.currentPage =

这件事我已经坚持了好几天了

基本上我有一个带Angular的$http.post,发布一个电子邮件地址和一条从post.php发送的邮件。然后,Post.php会根据mail()的结果回显文本,但当我返回Success

时,它实际上会在DOM上显示HTML,而不是处理它

谢谢你的帮助

app.controller('contactsController', function($scope, $rootScope, $http) {

        $rootScope.currentPage = "contact";
        $scope.postData = {};
        $scope.data = "Send";

        $scope.runScript = function() {
            $http({
                url: "post.php",
                method: "POST",
                headers: {'Content-Type': 'application/x-www-form-urlencoded'},
                data: $.param({"postData":$scope.postData})
            }).success(function(data) {
                $scope.data = data;
                console.log(data);
                $scope.contactForm.$valid = false;
            }).error(function(data, status, headers, config) {
                $scope.status = status;
            });

        };
    });
<?php

// get the raw POST data

$inputData = $_POST['postData'];

if(isset($inputData["email"])&&isset($inputData["message"])) {

    $email = $inputData["email"];
    $message = $inputData["message"];

    $to = "XXXXXXXXXXXXX@XXXXXXXXXX.COM"; // required

    $from = $email; // required

    $body = $message;

    $subject = "Online Query Submission";


// create email headers

    if(mail($to,$subject,$body,"From:$from/r/nReply-to:$from"))
        echo "<p>Success - Thanks!</p>";
    else
        echo "<p>Error - Sorry!</p>";

}

 ?>
app.controller('contactsController',函数($scope、$rootScope、$http){
$rootScope.currentPage=“联系人”;
$scope.postData={};
$scope.data=“发送”;
$scope.runScript=函数(){
$http({
url:“post.php”,
方法:“张贴”,
标题:{'Content-Type':'application/x-www-form-urlencoded'},
数据:$.param({“postData”:$scope.postData})
}).成功(功能(数据){
$scope.data=数据;
控制台日志(数据);
$scope.contactForm.$valid=false;
}).error(函数(数据、状态、标题、配置){
$scope.status=状态;
});
};
});

我认为您应该在您的视图中使用
ng bind html
,如下所示:

<div ng-bind-html="data"></div>
$http(url).success(function(data){
$scope.data=data;
});

ng bind html
计算表达式并以安全的方式将生成的html插入元素中


你可以在这里找到你想要的


然而,我认为让PHP只返回一个确认文本并在前端使用Angular对其进行格式化将是一个很好的做法。

尽管每个人都提供了极大的帮助,但问题的一部分是
ng bind html=“data”

剩下的问题是,我没有意识到
ngSanitize
是一项要求,将它作为依赖项加入,它就完美地工作了:)


我相信有一种更快的方法可以绕过ngSanitize,比如
$sce.trustAsHtml
,但我认为这不是一种好的做法。

你的意思是你在html中使用过它,但没有提到它?当我在文档中调查你的有用答案时,我意识到它需要消毒——我以前试过,虽然我可能没有正确使用它。谢谢你的回答。谢谢你的$sce.trustAsHtml技巧,很高兴知道:)可能没有ng bind html那么安全,但是有一条消息

,没有太大的风险任何其他人都在努力解决这个问题,别忘了检查关于ng bind html的文档。它需要ngSanitize作为依赖项。谢谢就我个人而言,我会直接从服务器返回文本,而不使用HTML,这样,如果我以后想更改演示文稿,我就不必担心服务器或数据,只需要标记本身。