显示Project Oxford的Emotion API结果

时间:2016-01-20 15:28:19

标签: javascript html ajax windows microsoft-cognitive

由于此帖Adding Microsoft's Emotion API to HTML website,我设法运行以下代码。

<HTML>
<head>
    <title>JSSample</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<body>
<script type="text/javascript">
$(function() {
        $.ajax({
            url: "https://api.projectoxford.ai/emotion/v1.0/recognize",
            beforeSend: function(xhrObj){
                // Request headers
                xhrObj.setRequestHeader("Content-Type","application/json");
                xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","my-key-here");
            },
            type: "POST",
            // Request body
             data: '{"url": "https://oxfordportal.blob.core.windows.net/emotion/recognition1.jpg"}',
        })
        .done(function(data) {
            alert("success");

        })
        .fail(function(error) {
        console.log(error.getAllResponseHeaders());

            alert("fail");
        });
    });
</script>
</body>
</head>
</html>

这可能看起来像是一个愚蠢的问题,但我一直想知道如何从HTML文件中获取情绪输出?即,而不是成功警告,我想生成一个文本文件,显示每种情绪的Emotions API输出(就像在他们的网站上一样)。

3 个答案:

答案 0 :(得分:0)

一个解决方案可能是阅读Blob。您可以从done()中的ajax调用中获取响应,并创建所需的文本文件。以下是使用在JSFiddle上找到的Blob的示例:

javascript

source

答案 1 :(得分:0)

data是一个数组,每个面一个项目。如果您只想转储文本,可以致电JSON.stringify(data)。如果您想在HTML中进行漂亮打印,请查看How can I pretty-print JSON using JavaScript?

答案 2 :(得分:0)

我已在我的网站HowHappy.co.uk中完成此操作,该网站也位于GitHub上:https://github.com/martinkearn/How-Happy

我在网站上显示数据的方式是在Javascript中枚举面数组,并使用基本CSS在正确的位置显示矩形,并使用Bootstrap popover显示详细信息数据。

这个回复太多了,所以我建议你看看GitHub回购,但这里有一些关键位

的Javascript

var dataString = JSON.stringify(response); 
var data = JSON.parse(dataString); 

    //draw rectangle for each face
    $.each(data.Faces, function (index, value) {

        var rect = document.createElement('div');
        rect.className = "rect";
        rect.style.height = value.faceRectangle.height + "px";
        rect.style.width = value.faceRectangle.width + "px";
        rect.style.left = value.faceRectangle.left + "px";
        rect.style.top = value.faceRectangle.top + "px";
        rect.id = "rect" + index;

        $('#result').append(rect);

        //add popover
        var popoverBody = "Happiness: " + Number((value.scores.happiness).toFixed(2))
            + "<br>Fear: " + Number((value.scores.fear).toFixed(2))
            + "<br>Anger: " + Number((value.scores.anger).toFixed(2))
            + "<br>Contempt: " + Number((value.scores.contempt).toFixed(2))
            + "<br>Disgust: " + Number((value.scores.disgust).toFixed(2))
            + "<br>Neutral: " + Number((value.scores.neutral).toFixed(2))
            + "<br>Sadness: " + Number((value.scores.sadness).toFixed(2))
            + "<br>Surprise: " + Number((value.scores.surprise).toFixed(2));
        $('#rect' + index).popover({
            title: (index + 1)
            content: popoverBody,
            html: "true",
            trigger: "click"
        });

    });

的CSS

.rect {
    position: absolute;
    border-color: #FFEA0E;
    border-style: solid;
    border-width: 4px;
    z-index: 10;
}

#result {
    position: relative;
    text-align: center;
    margin: 0 auto;
    width: auto;
}

#resultDetails {
    font-size: 3rem;
    text-align: center;
}