onkeyup触发Uncaught ReferenceError: showResults未定义 移除AJAX后正常
Uncaught ReferenceError: showResults is not defined at HTMLInputElement.onkeyup
问题根因
该报错并非函数本身没有定义,而是你的JavaScript代码存在语法错误,导致整个代码块解析失败,showResults函数没有被成功注册到全局作用域。
具体错误点位于AJAX配置对象中:url: "/search"; 这里属性结尾错误使用了分号;,JavaScript对象的多个属性之间必须使用逗号,分隔,这个语法错误直接阻断了后续所有代码的解析执行。你移除AJAX代码后语法错误消失,函数就能正常定义,所以功能恢复。
修复方法
将url配置行结尾的分号替换为逗号即可,修正后的完整JS代码如下:
let search = $("#livesearch") function showResults(str) { if (str.length === 0) { search.addClass("hide"); } else { search.removeClass("hide"); } $.ajax({ url: "/search", contentType: "application/json", method: "POST", data: JSON.stringify({ query: str }), success: function(result) { search.html(result.response); } }) }
排查技巧
后续遇到类似已定义的函数报未定义的问题,可优先检查控制台是否存在语法错误(SyntaxError),语法错误会导致整个关联代码块完全失效,优先解决语法问题再排查逻辑问题。
内容的提问来源于stack exchange,提问作者Muhammad Asad
相关产品推荐
相关产品推荐

