我对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
答案 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;}