【问题标题】:"Uncaught TypeError: undefined is not a function" error on firebaseFirebase上的“未捕获的TypeError:未定义不是函数”错误
【发布时间】:2015-03-24 01:16:02
【问题描述】:

我是 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 Uncaught TypeError: undefined is not a function

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

第一个 STT 成绩单在 #final_span 跨度中显示良好。 但我必须实时推送#final_span 中的字符串...

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

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

【问题讨论】:

    标签: javascript jquery firebase


    【解决方案1】:

    这一行是错误的:

    var sttText = data.value();
    

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

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

    请注意,如果您在提取数据后加上console.log 语句,则很容易找到这样的问题:

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

    这是一种非常常见的故障排除技术。在您的小提琴中,它会打印:

    对象{文本:“”}

    【讨论】:

      猜你喜欢
      • 2015-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 2014-08-19
      • 2015-03-14
      相关资源
      最近更新 更多