"未捕获的TypeError:undefined不是函数" firebase上的错误

时间:2015-01-25 12:24:37

标签: javascript jquery firebase

我对Web开发很陌生,而且我遇到firebase错误错误。

我正在使用Firebase和jQuery来创建一个识别语音并将其翻译为文本的Web应用程序。 (语音转文本,STT)

我必须实时推送STT结果,以便所有客户都能看到文本。

但是,此事件侦听器中出现问题:

finalSTTField.click(function (e) {
        var message = finalSTTField.val();
        sttRef.push({ text: message } );
    });

作为STT的结果,一个字符串在finalSTTField中,声明如下:

var finalSTTField = $('#final_span');

我想通过使用firebase推送字符串:

var sttRef = new Firebase('https://sizzling-torch-2935.firebaseio.com/');

<div class="sttResultContainer">
    <ul id="sttMessages"></ul>
</div>

var sttResults = $('#sttMessages');

sttRef.limitToLast(10).on('child_added', function (snapshot) {
        var data = snapshot.val();
        var sttText = data.value();

        var messageElement = $("<li>");
        messageElement.text(sttText);
        sttResults.append(messageElement);
        sttResults[0].scrollTop = sttResults[0].scrollHeight;
    });

但sttResults中没有任何内容。

Chrome浏览器上的错误消息是: firebase.js:26 未捕获的TypeError:undefined不是函数

每次发生点击事件时错误计数都会增加。 (奇怪的是,计数从10开始)

第一个STT成绩单在#final_span范围内表现良好。 但我必须实时推送#final_span中的字符串......

请有人帮帮我!这是我的第一个Web应用程序......

完整的源代码在这里: full source in JSFiddle

1 个答案:

答案 0 :(得分:1)

这一行错了:

var sttText = data.value();

在快照上调用val()以获取值后,您将获得一个JSON对象。没有为该对象定义任何方法。您的文本是在子属性中,因此您可以像:

var data = snapshot.val();
var sttText = data.text;

请注意,如果在提取数据后放置console.log语句,则很容易发现此类问题:

var data = snapshot.val();
console.log(data);

这是非常常见的故障排除技术。在你的小提琴打印:

  

对象{text:&#34;&#34;}