调用函数时出现Uncaught ReferenceError:SaveProgrammeData未定义求助
解决Uncaught ReferenceError: SaveProgrammeData is not defined的问题
咱们一步步排查这个问题,先从代码里的几个关键错误点入手:
1. 脚本语法错误导致函数未正确注册
这是最可能触发“函数未定义”的原因——你的脚本里存在几处语法/拼写错误,会导致浏览器解析脚本失败,函数根本没被成功定义:
- AJAX参数拼写错误:
contextType应该改成contentType,Success要改成success(jQuery的AJAX回调函数名是小写的,大写会被识别为无效参数,进而导致脚本执行异常) - 字符串拼接语法错误:success回调里的HTML拼接拆成了多段,正确写法应该把所有内容放在一个字符串里
- 空选择器无效:
$("").val();是空选择器,根本取不到下拉框的值,要改成对应select的选择器(ASP.NET Core会给asp-for="SubjectAreas"的元素生成id为SubjectAreas的属性,所以用$("#SubjectAreas"))
2. 脚本加载顺序的小问题
你的<script>标签写在了按钮元素的前面,虽然理论上全局函数能被后续元素调用,但如果页面有其他脚本(比如_FormScripts partial里的代码)干扰,或者浏览器解析顺序的小问题,最好把脚本移到所有DOM元素的后面(比如</body>标签前),确保函数定义在按钮元素加载完成之后。
修正后的完整代码示例
<sims-partial name="_FormScripts"></sims-partial> <div> <select asp-for="SubjectAreas" asp-items="Model.SubjectAreas"> </select> <p><a class="btn btn-default" onclick='SaveProgrammeData()'>Save</a></p> </div> <div> <table id="overview" class="table"> <tr> <th>SubjectAreas</th> </tr> </table> </div> <script> function SaveProgrammeData() { var subjectArea = $("#SubjectAreas").val(); $.ajax({ type: "POST", url: "ProgrammeMarketing/SaveProgrammeData", data: JSON.stringify({ SubjectArea: subjectArea }), contentType: "application/json", success: function (result) { $("#overview").append("<tr><td>" + result.SubjectArea + "</td></tr>"); } }); } </script>
总结一下,核心问题是脚本里的语法错误导致函数没被正确注册,修正这些错误后,再调整脚本位置确保加载顺序合理,就能解决“函数未定义”的报错了。
内容的提问来源于stack exchange,提问作者Ryn9011
相关产品推荐
相关产品推荐

